java随機數種子怎麼設定
引導語:Java技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用于PC、資料中心、遊戲控制台、科學超級計算機、行動電話和網際網路,同時擁有全球最大的開發者專業社群。以下是小編整理的java随機數種子怎麼設定,歡迎參考閱讀!
java設定随機數種子教程:
一、在j2se裡我們可以使用Math.random()方法來産生一個随機數,這個産生的随機數是0-1之間的一個double,我們可以把他乘以一定的數,比如說乘以100,他就是個100以内的随機,這個在j2me中沒有。
二、在java.util這個包裡面提供了一個Random的類,我們可以建立一個Random的對象來産生随機數,他可以産生随機整數、随機float、随機double,随機long,這個也是我們在j2me的程式裡經常用的一個取随機數的'方法。
三、在我們的System類中有一個currentTimeMillis()方法,這個方法傳回一個從1970年1月1号0點0分0秒到目前的一個毫秒數,傳回類型是long,我們可以拿他作為一個随機數,我們可以拿他對一些數取模,就可以把他限制在一個範圍之内啦
其實在Random的預設構造方法裡也是使用上面第三種方法進行随機數的産生的
對于方法二中的Random類有以下說明:
java.util.Random類有兩種方式建構方式:帶種子和不帶種子
不帶種子:
此種方式将會傳回随機的數字,每次運作結果不一樣
public class RandomTest {
public static void main(String[] args) {
java.util.Random r=new java.util.Random();
for(int i=0;i<10;i++){
System.out.println(r.nextInt());
}
}
帶種子:
此種方式,無論程式運作多少次,傳回結果都是一樣的
public static void main(String[] args) {
java.util.Random r=new java.util.Random(10);
for(int i=0;i<10;i++){
System.out.println(r.nextInt());
}
}
兩種方式的差别在于
(1) 首先請打開Java Doc,我們會看到Random類的說明:
此類的執行個體用于生成僞随機數流,此類使用 48 位的種子,該種子可以使用線性同餘公式對其進行修改(請參閱 Donald Knuth 的《The Art of Computer Programming, Volume 2》,第 3.2.1 節)。
如果用相同的種子建立兩個 Random 執行個體,則對每個執行個體進行相同的方法調用序列,它們将生成并傳回相同的數字序列。為了保證實作這種特性,我們為類Random指定了特定的算法。為了 Java 代碼的完全可移植性,Java 實作必須讓類 Random 使用此處所示的所有算法。但是允許 Random 類的子類使用其他算法,隻要其符合所有方法的正常協定即可。
Java Doc對Random類已經解釋得非常明白,我們的測試也驗證了這一點。
(2) 如果沒有提供種子數,Random執行個體的種子數将是目前時間的毫秒數,可以通過System.currentTimeMillis()來獲得目前時間的毫秒數。打開JDK的源代碼,我們可以非常明确地看到這一點。
public Random() { this(System.currentTimeMillis()); }
另外:
random對象的nextInt(),nextInt(int n)方法的說明:
int nextInt()
傳回下一個僞随機數,它是此随機數生成器的序列中均勻分布的 int 值。
int nextInt(int n)
傳回一個僞随機數,它是從此随機數生成器的序列中取出的、在 0(包括)和指定值(不包括)之間均勻分布的 int值。
【 java随機數種子怎麼設定】相關文章: