Random類用來生成隨機數字
Random類的使用步驟
- 導包
import java.util.Random;
- 創建對象
Random r = new Random();
- 使用
int num=r.nextInt(); //隨機生成一個整數,這個整數的范圍就是int類型的范圍-2^31~2^31-1
同理,nextBoolean()
返回布爾類型的隨機數,nextDouble()
返回double類型的隨機數...
其中,nextInt(int n)返回指定范圍的int類型的隨機數,這個范圍[0,n)左閉右開,包括0而不包括n的隨機數,例如n=3時,它返回的隨機數的可能取值的0,1,2。
練習
根據int變量n的值,來獲取隨機數字,范圍[1,n],可以取到1也可以取到n。
int n=5;
Random r=new Random();
int result=r.nextInt(n)+1;
System.out.println(result);
進階使用
- Random類中實現的隨機算法是偽隨機,也就是有規則的隨機。在進行隨機時,隨機算法的起源數字稱為種子數( seed),在種子數的基礎上進行一定的變換,從而產生需要的隨機數字。
- 相同種子數的 Random對象,相同次數生成的隨機數字是完全相同的。也就是說,兩個種子數相同的 Random對象,第一次生成的隨機數字完全相同,第二次生成的隨機數字也完全相同。這點在生成多個隨機數字時需要特別注意。
例如:
import java.util.Random;
public class RandomDemo1 {
public static void main(String[] args) {
int i = 0;
int j = 0;
Random random = new Random(1);
Random random1 = new Random(1);
i = random.nextInt();
j = random1.nextInt();
System.out.println("i:" + i + "\nj:" + j);
}
}
/*運行結果:
i:-1155869325
j:-1155869325
* */
再次強調:種子數只是隨機算法的起源數字,和生成的隨機數字的區間無關。
Random類的構造方法
public Random()
該構造方法使用一個和當前系統時間對應的相對時間有關的數字作為種子數,然后使用這個種子數構造 Random對象。public Random(long seed)
該構造方法可以通過指定一個種子數進行創建。
Random的常用示例
- 想生成范圍在[0,n]的整數
random.nextInt(n+1);
- 想生成范圍在[m,n]的整數
random.nextInt(n-m+1) + m;
- 生成[0,5.0)區間的小數
random.nextDouble() * 5;
- 生成[1,2.5)區間的小數
random.nextDouble() * 1.5 + 1;//先算出[0,1.5)的隨機數,然后整體加1