在開發(fā)項目中可能會有這樣的一個需求,需要在指定的范圍內(nèi)隨機生成一個整數(shù)值,例如 RPG 游項目中,在創(chuàng)建角色后隨機生成的屬性。下面,我為大家介紹幾種在 Java 中實現(xiàn)在指定范圍內(nèi)隨機生成整數(shù)的方法。
1、Java.Math.random()
說到隨機,很多人的腦海中都會蹦出 Math.random() 這個方法。但它不能直接生成一個整數(shù),而是生成一個[0.0, 1.0)之間的 double 類型的小數(shù),如下:
public class demo01 {
public static void main(String[] args) {
System.out.println(Math.random());
System.out.println(getType(Math.random()));
}
public static String getType(Object obj){
return obj.getClass().toString();
}
}
打印結(jié)果:
0.9567296616768681
class java.lang.Double
由此可知,該方法只能在[0.0,1.0)之間生成一個隨機 double 類型的小數(shù)。那么如何利用 random 方法來實現(xiàn)生成指定范圍內(nèi)的隨機小數(shù)呢?
假設我們需要生成一個范圍在[1,10]之間的隨機整數(shù),具體思路如下。
Math.random() ===> [0.0, 1.0)
Math.random() * 10 ===> [0.0, 10.0)
(int)(Math.random() * 10 ) ===> [0, 9]
(int)(Math.random() *10) + 1 ===> [1, 10]
for (int i = 0; i < 10; i++) {
int a=(int)(Math.random() * 10 )+1;
System.out.println(a);
}
最后打印結(jié)果(多次結(jié)果):
9
10
1
10
3
1
6
8
7
5
可見結(jié)果符合我們的要求。
2.Java.util.Random.nextInt();
Random random=new Random();
int a=random.nextInt(25); // 在[0, 25)之間隨機生成一個 int 類型整數(shù)
假設我們需要生成一個 [63, 99]之間的整數(shù),具體實現(xiàn)思路如下:
[63, 99] ===> 先找到這兩個數(shù)的最大公倍數(shù) ===> 9
[7, 11] * 9 ===> 將最小值取0
([0, 4] + 7) * 9
Random random=new Random();
for (int i = 0; i < 10; i++) {
int a=(random.nextInt(5)+7)*9;
System.out.println(a);
}
打印結(jié)果:
72
81
99
90
63
99
63
72
81
99
總結(jié)
以上就是關(guān)于使用 Java Math類中的 random 方法以及 Random 類中的 nextInt 方法實現(xiàn)在指定范圍內(nèi)隨機生成一個整數(shù)的詳細內(nèi)容,想要了解更多關(guān)于 Java 隨機數(shù)的應用內(nèi)容,請關(guān)注W3Cschool!