天天看點

Java産生随機數

        今天學桶排序,因為需要随機産生[0,1)的等長小數,于是随手谷歌之,翻了些資料,與諸君共享…… 一.java.lang.Math         該類下邊有random()方法,産生[0,1)的double值,注意1.0取不到;是以int p = (int)(Math.random()*10) 會産生[0,9]的整數值,沒有10。         補充:Math.round(11.5) = 12,Math.round(-11.5) = -11,其實round函數相當于floor(x+0.5)。ps:這是一道真實的面試題,大公司的。        PI:Math.PI,自然對數是Math.E,還有log、log10、hypot、floor、ceil,max、min、exp。 二.若幹問題   如何讓Math.random()生成的随機數包括1(不是數字包含1,而是産生1.0)?剛想到先随機Random.nextInt(2)以50%機率分别産生0和1,若是0,就選擇Math.random(),否則選擇1;不過這樣産生1的機率就是50%了。随機選取0-9,a-z,A-Z所有字元組成的一字元數組chararray(生成的時候一個一個寫太麻煩,直接nw一個String,然後toCharArray),也可以chararray[Random.nextInt(62)]如何産生的數字包含1(三位數)?先new String("012……9"),先産生兩個數字直接用或者當String裡的下标取值,然後把1插入就行了。 三.java.util.Random         檢視API發現有nextInt(int n),nextDouble,nextFloat等,後兩者都是傳回[0,1),前者傳回[0,n)(像C/C++裡的rand()函數,傳回0到RAND_MAX)。         則産生[0,10]可以整數可以:

          更一般地,産生[min,max]的整數: