更新時間:2021-05-13 16:14:28 來源:動力節(jié)點 瀏覽1142次
在Java中我們能夠使用java.util.Random類來產(chǎn)生一個隨機(jī)數(shù)發(fā)生器。它有兩種形式的構(gòu)造函數(shù),各自是Random()和Random(long seed)。Random()使用當(dāng)前時間即System.currentTimeMillis()作為發(fā)生器的種子,Random(long seed)使用指定的seed作為發(fā)生器的種子。
隨機(jī)數(shù)發(fā)生器(Random)對象產(chǎn)生以后,通過調(diào)用不同的method:nextInt()、nextLong()、nextFloat()、nextDouble()等獲得不同類型隨機(jī)數(shù)。
1>生成隨機(jī)數(shù)
Random random=new Random();
Random random=new Random(100);//指定種子數(shù)100
random調(diào)用不同的方法,獲得隨機(jī)數(shù)。
假設(shè)2個Random對象使用同樣的種子(比方都是100),而且以同樣的順序調(diào)用同樣的函數(shù),那它們返回值全然同樣。如以下代碼中兩個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.nextFloat());
System.out.println(random1.nextBoolean());
Random random2 = new Random(100);
System.out.println(random2.nextInt());
System.out.println(random2.nextFloat());
System.out.println(random2.nextBoolean());
}
}
2>指定范圍內(nèi)的隨機(jī)數(shù)
隨機(jī)數(shù)控制在某個范圍內(nèi),使用模數(shù)運算符%
import java.util.*;
class TestRandom {
public static void main(String[] args) {
Random random = new Random();
for(int i = 0; i < 10;i++) {
System.out.println(Math.abs(random.nextInt())%10);
}
}
}
獲得的隨機(jī)數(shù)有正有負(fù)的,用Math.abs使獲取數(shù)據(jù)范圍為非負(fù)數(shù)
3>獲取指定范圍內(nèi)的不反復(fù)隨機(jī)數(shù)
import java.util.*;
class TestRandom {
public static void main(String[] args) {
int[] intRet = new int[6];
int intRd = 0; //存放隨機(jī)數(shù)
int count = 0; //記錄生成的隨機(jī)數(shù)個數(shù)
int flag = 0; //是否已經(jīng)生成過標(biāo)志
while(count<6){
Random rdm = new Random(System.currentTimeMillis());
intRd = Math.abs(rdm.nextInt())%32+1;
for(int i=0;i<count;i++){
if(intRet[i]==intRd){
flag = 1;
break;
}else{
flag = 0;
}
}
if(flag==0){
intRet[count] = intRd;
count++;
}
}
for(int t=0;t<6;t++){
System.out.println(t+"->"+intRet[t]);
}
}
}
以上就是動力節(jié)點Java培訓(xùn)機(jī)構(gòu)的小編針對“Java如何獲取隨機(jī)數(shù)”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。