在java中,我們可以通過(guò)兩種方式來(lái)獲取隨機(jī)數(shù)(generating a random number)一種是大家熟悉的java.lang.Math.Random()靜態(tài)方法,另一種是創(chuàng)建java.util.Random對(duì)象。下面是兩種方法的使用過(guò)程:
一.java.lang.Math.random()
在使用這一靜態(tài)方法的時(shí)候,我們不需要import任何包,因?yàn)閖ava.lang.*包是默認(rèn)載入的,下面舉例說(shuō)面使用方法:
public class RandomTest{
public static void main(String[] args){
int i=Math.random();//random()會(huì)自動(dòng)產(chǎn)生一個(gè)0.0-1.0的雙精度隨機(jī)數(shù)
System.out.println(i);//輸出
i=Math.random()*1000;//產(chǎn)生0-1000的雙精度隨機(jī)數(shù)
System.out.println(i);
int b=(int)(Math.random()*1000);//產(chǎn)生0-1000的整數(shù)隨機(jī)數(shù)
System.out.println(b);
}
}
|
二.創(chuàng)建java.util.Random對(duì)象
import java.util.random
public class RandomTest{
public static void main(String[] args){
Random random=new Random();//創(chuàng)建random對(duì)象 int intNumber=random.nextInt();//獲取一個(gè)整型數(shù) float floatNumber=random.nextFloat();//獲取一個(gè)浮點(diǎn)數(shù)(0-1) double doubleNumber=random.nextDouble();//獲取雙精度數(shù)(0-1) boolean booleanNumber=random.nextBoolean();//獲取boolean數(shù) System.out.println("intNumber:"+intNumber); System.out.println("floatNumber:"+floatNumber); System.out.println("doubleNumber:"+doubleNumber); System.out.println("booleanNumber:"+booleanNumber);
}
}
|
random在產(chǎn)生隨機(jī)數(shù)的時(shí)候使用當(dāng)前的時(shí)間作為基數(shù),我們可以同過(guò)System.currentTimeMillis()來(lái)獲取這個(gè)基數(shù)。當(dāng)然我們也可以指定基數(shù):
Random random=new Random(100); |
同一基數(shù)所產(chǎn)生的隨機(jī)數(shù)序列是一樣的,可以用下面這一段程序進(jìn)行印證:
import java.util.random
public class RandomTest{
public static void main(String[] args){
Random random1=new Random(100); Random random2=new Random(100); for(int i=0;i<5;i++){ System.out.print(random1.nextInt()+"\t"); System.out.println(random2.nextInt()+"\t"); System.out.println("---------------------------------"); }
}
}
|
我們可以發(fā)現(xiàn)random1和random2所產(chǎn)生的隨機(jī)數(shù)是相同的。
|