scala - 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)
...
}
但这时不时会产生重复的随机数。这是一个错误还是我做了一些愚蠢的事情?
解决方案
别担心,这不是一个错误,而且你没有做任何愚蠢的事情。但是,您错过了一个随机数序列可以包含重复项的事实。
原因在评论中解释。
问题是人类对随机数没有很好的直觉理解。如果你要求人们写一系列数字,他们不太可能重复一个数字,即使这种情况发生的概率为 10%。如果您要求人们写下 5 个随机数字,他们不太可能使用相同的数字两次,即使这种情况应该发生在 70% 的时间。
推荐阅读
- xaml - 如何确定在 C++/CX 中是否选中了 XAML CheckBox?
- java - 访问多维arrayDeque中的索引
- c# - 如何在 WinForms 中正确实现 Di
- javascript - 完成后无法将 Ajax 调用中的元素推送到全局范围的数组
- symfony - 如何使用 knpuniversity/oauth2-client-bundle 获取 Google 刷新令牌?
- angular - angular x postman x cherrypy - 标题帖子上的问题内容长度
- c# - 获取 windows 域用户名和唯一令牌/密码以通过服务
- java - Java字符串忽略大小写实现
- linux - 在文件夹上下文中多次执行命令
- powershell - 用 Powershell 编写的 Azure 函数,返回一个 JObject