【发布时间】:2011-02-08 03:09:24
【问题描述】:
我用 java 编写了一个程序,它掷骰子并记录每个值 1-6 被掷出的总次数。我滚动了 600 万次。这是分布:
#of 0's: 0
#of 1's: 1000068
#of 2's: 999375
#of 3's: 999525
#of 4's: 1001486
#of 5's: 1000059
#of 6's: 999487
(0 不是一个选项。)
这种分布是否与随机掷骰子一致? 哪些客观的统计测试可以证实掷骰子确实足够随机?
编辑:关于应用程序的问题已经提出:我希望尽可能公平地实现一个游戏。
【问题讨论】:
-
无论您使用什么应用程序来确定算法是否“足够随机”。此外,顺序在您的应用程序中可能很重要;如果 1 可能对您的情况“不利”,则为字符串。
-
分布足够一致。你曾经花时间在 random.org 上吗?可能是您开始的好地方。
-
我认为这是你需要检查的:你经历的迭代越多,结果应该接近每个骰子数字的 1/6 分布。
-
@M.A. Hanin:更准确地说,你应该检查每卷数量的分布。即一千次滚动一千次,看看每组的个数是否符合预期分布。
-
如果您只是使用内部 Java RNG 算法,您应该足够安全。这是没有人应该能够玩的东西吗?如果你自己动手,你可以向我们提供一些关于你做了什么以及你排除了什么的信息,这样我们就可以帮助你改进它。并不是说您必须提供任何业务信息,而是您分享的越多,社区就可以改进更多。
标签: language-agnostic math random