Java-隨機數詳解

  • 2019 年 10 月 6 日
  • 筆記

在我們的Java課程中通過遊戲案例,我們通過隨機數來對每次的攻擊傷害值進行了一個賦值,那麼Java中還有哪些方法可以產生隨機數呢?

Java中產生隨機數的幾種方式,隨機數的概念從廣義上講,有三種:

1、通過System.currentTimeMillis()來獲取一個當前時間毫秒數的long型數字。

PS:這個方法返回一個從1970年1月1號0點0分0秒到目前的一個毫秒數,返回類型是long,我們可以拿它作為一個隨機數,拿它對一些數取模,就可以得到我們想要的一些範圍內隨機數

2、通過Math.random()返回一個0到1之間的double值。

PS:這個產生的隨機數是0-1之間的一個double,我們可以把他乘以一定的倍數來得到想要的效果,比如說乘以10,他就是個10以內的隨機數

3、通過Random類來產生一個隨機數,這個是專業的Random工具類,功能強大。

PS:我們可以通過新建一個Random的對象來產生隨機數,他可以產生隨機整數、float、double、long型隨機數

因為方法3是我們日常項目中比較常用的一種,也是使用範圍比較廣的一種,所以我們這裡重點講講第三種方法Random類來產生一個隨機數。

java.util.Random類有兩種構建方式:帶種子和不帶種子 。

不帶種子 這種方式將會返回隨機的數字,每次運行結果不一樣:

輸出結果是:

帶種子

無論程式運行多少次,返回結果都是一樣的【老九君親測有效】:

輸出結果,兩次結果均相同,重複運行也均是同樣的結果:

兩種方式的差別在於?

Random() 創建一個新的隨機數生成器。 Random(long seed) 使用單個 long 種子創建一個新隨機數生成器: public Random(long seed) { setSeed(seed); } next 方法使用它來保存隨機數生成器的狀態。

我們先來看看API怎麼說:

通俗說,兩者的區別是:

帶種子的,每次運行生成的結果都是一樣的。如果用相同的種子創建兩個 Random 實例,則對每個實例進行相同的方法調用序列,它們將生成並返回相同的數字序列。

不帶種子的,每次運行生成的都是隨機的,沒有規律可言。

創建不帶種子的Random對象:

Random random = new Random();

創建不帶種子的Random對象有兩種方法:

1) Random random = new Random(555L);

2) Random random = new Random();

random.setSeed(555L); Random對象的nextInt(),nextInt(int n)方法的說明: 1.int nextInt():

返回下一個偽隨機數,它是此隨機數生成器的序列中均勻分布的int值。

2.int nextInt(int n): 返回一個偽隨機數,它是從此隨機數生成器的序列中取出的、在 0(包括)和指定值(不包括)之間均勻分布的 int值。 如下所示ran.nextInt(10):

列印結果如下,生成了0~9之間的隨機整數:

更多乾貨筆記關注微信公眾號 : 老九學堂

Tags: