在 python 3.7 中,将迭代延迟一秒是否会改进基于系统时钟的 RNG?

In python 3.7, would delaying iterations by a second improve my RNG that is based on the system clock?

我正在使用以下代码为我的 RNG 播种。 结果看起来太接近了,在统计上是不合理的(边缘案例连续出现的频率太高了)。

这个RNG不一定是完美的,但我希望它是合理的。在迭代之间将整个例程休眠一秒钟(或更短)会改善播种吗?时间并不是什么大问题。如果整个程序跑20秒或者2秒都不是问题。

seed_clock = time.time()

seed(seed_clock)

value = randint(1, 100)

随机性的有趣之处在于,您可以使用不同的种子获得两个非常相似的结果,但可能性很小。拖秒对你没有帮助:

种子“启动”随机数生成器 - 从中​​提取随机数的每种方式都会以可预测的方式改变内部状态,因此如果您使用相同的种子和相同的种子,您会从中获得相同的“数字”行动顺序。

import random

random.seed(42)
print( random.getrandbits(20))
print( random.getrandbits(30))
print( random.getrandbits(40))

random.seed(42)
print( random.getrandbits(20))
print( random.getrandbits(40))
print( random.getrandbits(30))

random.seed(42)
print( random.getrandbits(40))
print( random.getrandbits(30))
print( random.getrandbits(20))

20、30、40 个随机数的输出顺序不同:

670487             # 20 based off of seed(42)
119540831          # 30
811856239313       # 40

670487             # 20 same based off of seed(42)
26247967103        # 40 different
796233790          # 30 different

123005401501       # 40 based off of seed(42)
26855092           # 30 different
777572             # 20 different

如果你想要可预测性,你只能播种,只有当你使用完全相同的 state-mutating 动作序列时,你才能获得可预测性 - 任何其他“相似性”只是 - 随机性。

如果你想以某种方式获得“更多”随机性——你可以切换到一些加密使用的随机性生成器——比如 https://docs.python.org/3/library/secrets.html 但即便如此你可能会得到 看起来 的东西的眼睛不是很随意。

这个 Williams - Why Are People Bad at Detecting Randomness? A Statistical Argument 或这个 为什么人们不善于检测随机性?因为它很难。 可能是一本有趣的读物 -

也是

Humans are biased. A number of studies so far confirm that humans are not a good source of randomness. A couple to get you started:

  • W. A. Wagenaar (1972). "Generation of random sequences by human subjects: a critical survey of the literature". Psychological Bulletin 77: p65–72

  • Brugger, P. (1997). Variables that influence the generation of random sequences: An update. Perceptual and Motor Skills, 84(2), 627-661.

  • Persaud, N. (2005). Humans can consciously generate random number sequences: A possible test for artificial intelligence. Medical hypotheses, 65(2), 211-214

(来源:reddit 上的回答 - 线程:https://www.reddit.com/r/askscience/comments/3nm2kp/comment/cvpx3ol/?utm_source=share&utm_medium=web2x&context=3