如何找到随机数生成器的种子?

Nat*_*sha 6 python python-3.x random-seed

l_new我使用以下代码行来填充from的条目l

import random

l = [11.1, 22.2, 33.3, 11.1, 33.3, 33.3, 22.2, 55.5]

l_new = random.choices(l, k=30)
print(l_new)
Run Code Online (Sandbox Code Playgroud)

l_new我可以通过使用固定种子来生成特定的始终

random.seed(1)
l_new = random.choices(l, k=30)
Run Code Online (Sandbox Code Playgroud)

现在,我想知道当种子在生成 之前未固定时是否可以找到给seed定的。l_newl_new

编辑:

根据下面的建议我可以做什么

import sys
import random
l = [11.1, 22.2, 33.3, 11.1, 33.3, 33.3, 22.2, 55.5]
    
for i in range(10):
    seed = random.randrange(sys.maxsize)
    print("Seed:", seed)
    random.seed(seed)
    l_new = random.choices(l, k=30)
    print(l_new)
Run Code Online (Sandbox Code Playgroud)

并保存以便稍后seed检索所需的内容?l_new

a_g*_*est 0

这是不可能的,因为randomRNG 的输出是通过映射的floor,并且该关系不是注入

return [population[floor(random() * n)] for i in _repeat(None, k)]
Run Code Online (Sandbox Code Playgroud)

因此,即使您知道从原始列表中选择了哪些元素l,您也无法知道random产生了什么输出,因此无法推断出 RNG 的内部状态。