Excel VBA:Rnd()方法不够随机


0

我正在使用Excel和VBA来模拟大量的骰子。

我遇到的问题是在一段时间后,滚动开始重复,我开始得到的结果不是随机的。

我正在使用INT = RND() * 6 +.5每个骰子。
有没有办法让它更随机几个数量级?
Randomize事先使用,以防止每次都以相同的方式开始。


1
到目前为止你做了哪些研究?你是如何确定序列正在重复的?你用的是什么代码?
James Snell 2013年

人类对真正的随机性没有好感。我写了一个脚本来选择和播放startrek的随机ep,但是注意到它经常重放几个eps。我决定通过生成一批200 eps来测试它,并分析统计数据。我的算法实际上比随机的“更好”,因为它选择了77%的可能eps,并且从不重复任何一次超过两次。一个真正随机的算法将覆盖约67%的范围。最后我确定我实际上并不想要随机,并添加了历史/黑名单功能以防止重放。希望轶事有所帮助。
弗兰克托马斯

你是如何确定输出“不够随意”的?你做过卡方检验吗?我只是好奇。此外,它有助于查看您的代码。
Excellll 2013年

在SO上使用RandomizeRandomize Timer 喜欢它的解释吗?
nixda 2013年

Answers:


1

VBA可能实现了伪随机函数。由于它是一个函数,它会重复,但会生成一组具有随机类似分布的值。

您可能需要开发或寻找一个带有随机源的库,并根据该库生成一系列随机数。一个这样的不可预测性的来源是按键之间的时间,或收集诸如鼠标移动之类的输入。

您还可以使用Web服务并下载大量随机数。random.irb.hr和random.org是两个这样的服务。

random.irb.hr在其网站上有一些库,允许您在创建帐户后以编程方式访问该服务。

您还可以考虑购买他们使用的实际发电机并使用他们提供的软件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.