Java Random類的使用

常見用法:

Random類中的方法比較簡單,每個方法的功能也很容易理解。需要說明的是,Random類中各方法生成的隨機數字都是均勻分佈的,也就是說區間內部的數字生成的機率是均等的。下面對這些方法做一下基本的介紹:

a、public boolean nextBoolean():是生成一個隨機的boolean值,生成true和false的值機率相等,也就是都是50%的機率。

b、public double nextDouble():是生成一個隨機的double值,數值介於[0,1.0)之間。

c、public int nextInt():是生成在-2^31到2^31-1之間int值。如果需要生成指定區間的int值,則需要進行一定的數學變換,具體可以參看下面的使用示例中的代碼。

d、public int nextInt(int n):是生成一個介於[0,n)的區間int值,包含0而不包含n。如果想生成指定區間int值,也需要進行一定的數學變換,具體參看下面的使用示例中的代碼。

e、public void setSeed(long seed):是重新設置Random對象中的種子數。設置完種子數以後的Random對象和相同種子數使用new關鍵字創建出的Random對象相同。

f、 public float nextFloat(int n):返回下一個僞隨機數,它是取自此隨機數生成器序列的、在 0.01.0 之間均勻分佈的  float 值。

g、 public long nextLong():返回下一個僞隨機數,它是取自此隨機數生成器序列的均勻分佈的 long 值。

h、public double nextGaussian():返回下一個僞隨機數,它是取自此隨機數生成器序列的、呈高斯(“正態”)分佈的 double 值,其平均值是 0.0,標準差是 1.0。

1.產生int類型範圍內 -2147483648~2147483647 的隨機整數

Random random=new Random();
int a=random.nextInt();
System.out.println(a);

2.產生[0,n)區間的隨機數,包含0但不包含n。

Random random=new Random();
int a=random.nextInt(10);  //產生0到10之間的隨機整數
System.out.println(a);

3.產生(0,1)範圍的隨機小數

Random random=new Random();
double a=random.nextDouble();  //產生0到1之間的隨機小數,默認double精度
BigDecimal bg = new BigDecimal(a);
double b = bg.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();//精確到小數點後一位
System.out.println(b);

4.seed 種子的使用

注意:相同種子輸出的結果相同,不同種子輸出結果不同

(1)相同種子

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());

運行結果相同:.

-1193959466
0.7346627
false

-1193959466
0.7346627
false

 (2)不同種子

Random random1 = new Random(System.currentTimeMillis());
System.out.println(random1.nextInt());
System.out.println(random1.nextFloat());
System.out.println(random1.nextBoolean());
System.out.println();
Random random2 = new Random(System.currentTimeMillis());
System.out.println(random2.nextInt());
System.out.println(random2.nextFloat());
System.out.println(random2.nextBoolean());

 運行結果不同:

-1674565819
0.2528978
false

-1664947096
0.5270924
true

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章