在Java中我們可以使用java.util.Random類來產(chǎn)生一個(gè)隨機(jī)數(shù)發(fā)生器。它有兩種形式的構(gòu)造函數(shù),分別是Random()和Random(long seed)。Random()使用當(dāng)前時(shí)間即System.currentTimeMillis()作為發(fā)生器的種子,Random(long seed)使用指定的seed作為發(fā)生器的種子。

隨機(jī)數(shù)發(fā)生器即Random對象產(chǎn)生以后,可以通過對象調(diào)用不同的函數(shù):nextInt()、nextLong()、nextFloat()、nextDouble()等來獲得不同類型的隨機(jī)數(shù)。

如果2個(gè)Random對象使用相同的種子(比如都是100),并且以相同的順序調(diào)用相同的函數(shù),那么它們的返回值完全相同。如下面代碼中兩個(gè)Random對象的輸出完全相同:

 

import java.util.*;

class TestRandom {

public static void main(String[] args) {

Random random1 
= new Random(100);

System.
out.println(random1.nextInt());

System.
out.println(random1.nextInt());

System.
out.println(random1.nextFloat());

System.
out.println(random1.nextFloat());

System.
out.println(random1.nextBoolean());

System.
out.println(random1.nextBoolean());

Random random2 
= new Random(100);

System.
out.println(random2.nextInt());

System.
out.println(random2.nextInt());

System.
out.println(random2.nextFloat());

System.
out.println(random2.nextFloat());

System.
out.println(random2.nextBoolean());

System.
out.println(random2.nextBoolean());

}


}




如果希望將返回的隨機(jī)數(shù)控制在某個(gè)范圍內(nèi)(比如0~99),則可以使用模數(shù)運(yùn)算符%。說明:將模數(shù)運(yùn)算符%作用于隨機(jī)數(shù)產(chǎn)生器所產(chǎn)生的隨機(jī)數(shù)身上,目的是為了讓隨機(jī)數(shù)的最大值局限于我們所制定的操作數(shù)數(shù)值減1范圍內(nèi)。如下面代碼就將輸入控制在0~99的范圍內(nèi),注意:如果不加Math.abs(),輸出范圍將是-99~99。

 

import java.util.*;

class TestRandom {

public static void main(String[] args) {

Random random 
= new Random();

for(int i = 0; i < 100; i++{

System.
out.println(Math.abs(random.nextInt()) % 100);

}


}


}