首页 > 解决方案 > Scala随机数生成器不产生范围之间的唯一随机数

问题描述

我有以下代码来生成新的随机数

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)

...
}

但这时不时会产生重复的随机数。这是一个错误还是我做了一些愚蠢的事情?

标签: scalarandom

解决方案


别担心,这不是一个错误,而且你没有做任何愚蠢的事情。但是,您错过了一个随机数序列可以包含重复项的事实。

原因在评论中解释。

问题是人类对随机数没有很好的直觉理解。如果你要求人们写一系列数字,他们不太可能重复一个数字,即使这种情况发生的概率为 10%。如果您要求人们写下 5 个随机数字,他们不太可能使用相同的数字两次,即使这种情况应该发生在 70% 的时间。


推荐阅读