【发布时间】:2018-06-04 10:16:49
【问题描述】:
我已经阅读了许多随机数生成器以及大多数问题(可重复、非均匀分布、浮点精度、w/e 模数)的所有问题。
我是一名游戏开发者,我在想为什么不从时间生成“随机”数字?我知道它们不会是“随机的”,但至少它们是无法预测的,我很高兴他们只是对玩家感到随机。
例如,假设在每一帧,我们可以从当前时间中取出 5 位数字,并使用它们来生成随机数。 假设我们将时间作为浮点数 ss.mmmuuunnn 其中 ss = 秒,mmm = 毫秒,uuu = 微秒和 nnn = 纳秒,我们可以只取 muuun 部分并使用它来生成我们自己的随机数。我对它们进行了一些调查,它们看起来和感觉都很随意。我可以想出很多公式来处理这 5 个数字并得到新的数字。
这里有人看到任何错误或表现不佳吗? 提醒一下,我只是在寻找一种简单的方法来生成“感觉”随机分布且不可预测的数字。
这是给玩家随机感的简单而体面的方式吗?
【问题讨论】:
-
如果你想要极快、不太明显可预测的数字,你可以试试DOOM approach。老实说,查找当前时间的系统调用到底有多快?从那时起使用某种 PRNG seed 但将状态保存在您自己的内存中可能要快得多。 linear congruential generator 的“随机性”很差,但状态很少而且速度很快。
-
我不相信这里存在开箱即用的伪随机数生成器无法解决的问题。
-
顺便说一句,你有同样的模数问题。常规 PRNG 有什么问题?
-
有趣的是,实际上随机数(或任何至少有点接近的东西)通常不会让人感觉特别随机,例如,重复的概率感觉“太高”。
-
srand(time(NULL)) 是样板,Google 有 310,000 次点击:)