在Java中想要在指定范圍內(nèi)生成隨機數(shù)的實現(xiàn)方式主要有兩種,一種是使用Math類中的random()方法,另一種是使用Random類。下面文章將為大家詳細總結(jié)Java中這兩種生成隨機數(shù)的方式。
一、Math.random()方法
該方法相對于 Random 類而言比較簡單,因為 Math 類是 Java 的內(nèi)置包裝類,無需創(chuàng)建一個實例化對象,可以在程序中直接調(diào)用該類,以及使用該類的方法。
使用該方法的小伙伴們應(yīng)該都知道,該方法只能是生成 [0.0,1.0) 之間 double 類型的任意一個小數(shù),生成的隨機數(shù)相對比較單一,想要生成其他類型的,就需要在該方法前面加上一個類型強轉(zhuǎn)。
public class Demo01 {
public static void main(String[] args) {
for (int i = 0; i <5 ; i++) {
System.out.println("第"+(i+1)+"個隨機數(shù)"+Math.random());
}
}
}
打印結(jié)果:
第1個隨機數(shù)0.414584525834634
第2個隨機數(shù)0.20853675432372987
第3個隨機數(shù)0.8055865595912437
第4個隨機數(shù)0.36986922245541953
第5個隨機數(shù)0.8716016725358281
生成具體范圍內(nèi)的任意一個整數(shù),例如在 [20, 35] 之間生成隨機數(shù)。
public class Demo01 {
public static void main(String[] args) {
int num;
for (int i = 0; i < 5; i++) {
/**
* 要求是在[20,35]之間生成一個隨機整數(shù)
* 因為要包括35,但是random隨機生成是不包括右側(cè)的值,所以右側(cè)取36
* 即[20,36)
* 左右各減去20 [0,16)
* 而Math.random的范圍是在[0,1),需要乘上16
* 最后再加上20,即[20,36)
* 在進行 int 強轉(zhuǎn)
* */
num = (int)(Math.random()*16)+20;
System.out.println("第"+(i+1)+"次:"+num);
}
}
}
打印結(jié)果:
第1次:29
第2次:25
第3次:33
第4次:34
第5次:30
二、Random類
Random 相較于 Math.random() 方法而言,它提供了各式各樣的生成隨機數(shù)的方式,可以生成 boolean,int,long,float,byte以及double類型的隨機數(shù)。
Random 類是屬于 java.util 包的,該類經(jīng)常使用的兩個構(gòu)造方法如下:
- Random() 使用一個和系統(tǒng)時間(也就是你電腦右下角的時間)對應(yīng)的數(shù)字作為種子數(shù),然后根據(jù)這個種子數(shù)構(gòu)造一個 Random 對象。
- Random(long seed) 使用單個 long 類型的參數(shù)創(chuàng)建一個新的隨機數(shù)生成器。
下面將通過編寫一個簡單的 Java 程序,來演示 Random 的具體使用:
import java.util.Random;
public class Demo02 {
public static void main(String[] args) {
// 需要創(chuàng)建一個Random類實例化對象
Random random=new Random();
double d1=random.nextDouble(); // 生成一個[0.0,1.0)之間double類型的小數(shù)
double d2=random.nextDouble() * 10; // 生成一個[0.0,10.0)之間double類型的小數(shù)
int i1=random.nextInt(5); // 生成[0,5)之間的一個整數(shù)
int i2=random.nextInt(15)-5;// 生成[-5,10)之間的一個整數(shù)
long l1=random.nextLong(); // 生成一個長整型的整數(shù)
boolean b1=random.nextBoolean(); // 生成一個布爾值
float f1=random.nextFloat(); // 生成一個浮點型
System.out.println("[0.0,1.0)隨機生成的小數(shù)是:"+d1);
System.out.println("[0.0,10.0)隨機生成的小數(shù)是:"+d2);
System.out.println("[0,5)隨機生成的整數(shù)是:"+i1);
System.out.println("[-5,10)隨機生成的整數(shù)是:"+i2);
System.out.println("隨機生成的長整型是:"+l1);
System.out.println("隨機生成的布爾值是:"+b1);
System.out.println("隨機生成的浮點型是:"+f1);
}
}
打印結(jié)果:
[0.0,1.0)隨機生成的小數(shù)是:0.9045874539818738
[0.0,10.0)隨機生成的小數(shù)是:1.1869962319035776
[0,5)隨機生成的整數(shù)是:2
[-5,10)隨機生成的整數(shù)是:1
隨機生成的長整型是:4030922400205769823
隨機生成的布爾值是:true
隨機生成的浮點型是:0.3139649
三、總結(jié)
本篇關(guān)于 Java 中生成隨機數(shù)的兩種方式,Math.random() 和 Random 類的詳細內(nèi)容介紹到此就結(jié)束了,想要了解更多相關(guān)于 Java 隨機相關(guān)的知識,可以搜索W3Cschool相關(guān)文章。希望本篇文章對大家的學(xué)習(xí)有所幫助,也希望大家能夠多多地關(guān)注和支持我們!