1

在 NumPy 的当前实现中,MT19937 生成器接受熵输入(int 或 int 序列),将其传递给由 SeedSequence 实现的哈希函数,并使用返回的数字序列作为初始状态值,第一个值除外。根据描述

输入种子由 SeedSequence 处理以填充整个状态。重置第一个元素,以便仅设置其最高有效位。

但似乎第一个状态uint32值是固定的:2147483648。

my_pr_stream = np.random.Generator(np.random.MT19937(0))
print(my_pr_stream.bit_generator.state["state"]["key"][:3])
# output is [2147483648 3677149159  745650761]

my_seedsq = np.random.SeedSequence(0)
print(my_seedsq.generate_state(3))
# output is [2968811710 3677149159  745650761]

它总是有这个价值吗?我们有什么收获吗?如果第一个状态不是那么重要,那么放弃状态初始化的原始想法的原因是什么,可以用种子值定义第一个状态值,其余的由算法确定,如维基百科所述它?

为什么我在这里而不是在 Numpy 的 github 上发布这个问题:NumPy 向 StackOverflow 提出问题、帮助和支持。他们的 github 一般用于错误报告和功能请求。

4

0 回答 0