生成'随机'数字从时间?

时间:2018-06-04 10:16:50

标签: c++ c random time

我已经阅读了许多随机数生成器和大多数问题(可重复,非均匀分布,浮点精度,模数w / e)。

我是一名游戏开发者,我在想为什么不生成随机的'数字从时间?我知道他们不会随机,但至少他们无法预测,我们只是为他们感到随意而感到高兴。

例如,让我们说,在每一帧,我们可以从当前时间中取5位数,并使用它们生成随机数。 让我们说如果我们有时间作为浮动 ss.mmmuuunnn ,其中 ss =秒, mmm =毫秒, uuu =微秒和 nnn =纳秒,我们只能使用 muuun 这一部分来生成我们自己的随机数。我对它们进行了一些调查,它们看起来很随意。我可以拿出这么多公式来玩这5个数字并得到新的数字。

任何人在这里看到任何错误或可能表现糟糕的事情? 提醒一下,我正在寻找一种简单的方法来生成数字“感觉”和“感觉”。随机分布,不可预测。

这是一种让玩家有随机感的简单而体面的方式吗?

1 个答案:

答案 0 :(得分:2)

让我们假设你的论点是平均每0.1毫秒调用一次随机函数(因为你需要它很快,你经常调用它,对吗?)并且它同样可能落入该时间范围内的任何地方。换句话说, uun 部分被认为是完全随机的,但是所有更高的部分只是从一个调用到另一个调用缓慢变化,因此大部分是可预测的。

这是1000种可能的结果或~10位的随机性。有1,056,964,608 normal floats bewteen 0 and 1 - 当然不是平均分配的。这个数字增加了三个数量级,这听起来像是“随机性差”#34;对我来说。同样地,将10位扩展到int的32位(无论你的功能多么花哨)都不会实际上改善随机性。

另请注意,这些都不会处理您的调用可能非常周期性和/或短序列的可能性(很可能是场景),以及您的系统时间函数可能没有足够高的分辨率这一事实(或significantly increase power consumption of the system)。两者都进一步降低了所获得时间的随机性,并且后者的副作用可能是非常不希望的。

  

提醒一下,我正在寻找一种简单的方法来生成数字“感觉”和“感觉”。随机分布,不可预测。

这是非常不明确的。人类在判断随机性方面很糟糕,很可能会感觉到#34;接近均匀的分布比真正的,完全随机的分布更加随机 - 特别是当涉及到条纹时。

不可预测性也存在于太多层次上,而且#34;玩家无法手动预测敌人会做什么" to"加密安全直到时间结束"。例如,在给定上述假设的情况下,可以预测快速连续发生的两个随机呼叫中的第二个的结果,其成功率为0.1%至100%。在游戏中如何出现这种模式很难说,但是人类在发现模式方面非常擅长。

相关问题