[英]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.