首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么0到4的随机数大多是1?

为什么0到4的随机数大多是1?
EN

Stack Overflow用户
提问于 2014-04-07 14:53:38
回答 6查看 286关注 0票数 5

我使用一个简单的随机计算的一个小范围内有4个元素。

代码语言:javascript
复制
indexOfNext = new Random().nextInt(4); //randomize 0 to 3

当我附加调试器时,我会看到,对于第一个2-3次,每次的结果是1。

这是对一个小范围错误的方法,还是我应该实现另一个逻辑(检测先前的随机结果)?

注意:如果这只是巧合,那么使用这种方法是错误的,对吗?如果是,你能提出替代方法吗?也许是洗牌?理想情况下,替代方法可以检查下一个结果是否与前一个结果相同。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-04-07 14:56:08

不要每次创建一个new Random(),创建一个对象并多次调用它。

这是因为您需要一个随机生成器和它的多个数字

随机序列,而不是有许多随机生成器和

它们产生的随机序列的第一个数。

票数 11
EN

Stack Overflow用户

发布于 2014-04-07 14:56:38

通过反复创建一个新实例,您滥用了随机数生成器。(这是由于实现设置了一个起始随机数值,这是系统时钟时间的一个非常确定的函数)。这破坏了生成器的统计特性。

您应该创建一个实例,然后在需要数字时调用nextInt

票数 9
EN

Stack Overflow用户

发布于 2014-04-07 14:57:04

你能做的一件事就是抓住随机实例。它必须在每次实例化它时自己播种,如果该种子是相同的,那么它每次都会生成相同的随机序列。

其他选项正在转换为SecureRandom,但您肯定希望保留该随机实例以获得最佳的随机数性能。您真正需要的只是SecureRandom,您是在随机生成具有安全含义的东西。比如实现密码算法或者处理类似的事情。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22915937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档