---------------------- android培訓、java培訓、期待與您交流! ----------------------
Random 類專門用於生成一個僞隨機數,他有兩個構造函數:一個構造函數使用默認的種子,另一個構造函數需要程序員
顯示傳入一個long 類型的種子。同時他提供了很多方法來生成僞隨機數。即如果類的兩個實例時用同一個種子創建的,
對他們以同樣的順序調用方法,則他們會產生相同的數字序列。
下面做個試驗驗證一下,當兩個Random對象的Seed相同時,他們會產生相同的數字序列,需要注意的是,當使用默認的種子
構造Random對象時,那麼他們的seed就相同,屬於同一個seed。
import java.util.Random;
class SeedTest
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
Random r1 = new Random(50);
sop("第一個seed爲50的隨機數對象:");
sop("r1.nextBoolean():\t" + r1.nextBoolean());
sop("r1.nextInt():\t\t" + r1.nextInt());
sop("r1.nextDouble():\t" + r1.nextDouble());
sop("r1.nextGaussian():\t" + r1.nextGaussian());
sop("-------------------------------------------");
Random r2 = new Random(50);
sop("第二個seed爲50的隨機數對象:");
sop("r2.nextBoolean():\t" + r2.nextBoolean());
sop("r2.nextInt():\t\t" + r2.nextInt());
sop("r2.nextDouble():\t" + r2.nextDouble());
sop("r2.nextGaussian():\t" + r2.nextGaussian());
sop("-------------------------------------------");
Random r3 = new Random(100);
sop("第三個seed爲100的隨機數對象:");
sop("r3.nextBoolean():\t" + r3.nextBoolean());
sop("r3.nextInt():\t\t" + r3.nextInt());
sop("r3.nextDouble():\t" + r3.nextDouble());
sop("r3.nextGaussian():\t" + r3.nextGaussian());
sop("--------------over-------------------------");
}
}
/*
運行結果:
D:\learning\0801>java SeedTest
第一個seed爲50的隨機數對象:
r1.nextBoolean(): true
r1.nextInt(): -1727040520
r1.nextDouble(): 0.6141579720626675
r1.nextGaussian(): 2.377650302287946
-------------------------------------------
第二個seed爲50的隨機數對象:
r2.nextBoolean(): true
r2.nextInt(): -1727040520
r2.nextDouble(): 0.6141579720626675
r2.nextGaussian(): 2.377650302287946
-------------------------------------------
第三個seed爲100的隨機數對象:
r3.nextBoolean(): true
r3.nextInt(): -1139614796
r3.nextDouble(): 0.19497605734770518
r3.nextGaussian(): 0.6762208162903859
--------------over-------------------------
*/
從上面運行結果來看,如果兩個Random對象的種子相同,而且方法的調用順序也相同,則他們會產生相同的
數字序列,這也說明,Random 產生的數字並不是真正隨機的,而是一種僞隨機。
所以爲了避免兩個Random對象產生相同的數字序列,開發時通常推薦使用當前時間來作爲Random對象的種子
即:
Random rand = new Random(System.currentTimeMillis());
---------------------- android培訓、java培訓、期待與您交流! ----------------------詳細請查看:http://edu.csdn.net/heima