簡體   English   中英

Scala隨機數生成器不在范圍之間產生唯一的隨機數

[英]Scala Random Number Generator Not Producing Unique Random Numbers Between A Range

我有以下代碼來生成新的隨機數

val start = 1
val end = 50000000
val rnd = new scala.util.Random

for (i < 1 to 25000000){
  val rnum = start + rnd.nextInt((end - start) + 1)

...
}

但是,這一次又一次地產生重復的隨機數。 這是錯誤還是我做了一些愚蠢的事情?

不用擔心,這不是錯誤,您也沒有做任何愚蠢的事情。 但是,您已經錯過了一個事實,即隨機數序列可以包含重復項

注釋中說明了原因。

問題在於人類對隨機數沒有很好的本能理解。 如果您要求人們寫一系列數字,即使出現這種情況的可能性為10%,他們也不大可能重復一個數字。 如果您要求人們寫下5個隨機數字,那么即使70%的情況下,他們都不太可能兩次使用相同的數字。

沒有錯誤。 它隨機選擇,因此有機會選擇相同的元素。 我更喜歡使用List的shuffle功能。

val list = (1 to 100).toList

scala.util.Random.shuffle(list).take(1)

但是創建大量列表將不是一個有效的解決方案。 您可以使用以下方式生成隨機數。

val seed = new java.util.Date().hashCode
val rand = new scala.util.Random(seed)
val someNum = rand.nextInt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM