生成没有上限的随机整数

Ago*_*ino 2 python random numpy random-seed

我想以可预测的方式生成随机种子.

我本来希望这样做

seed = 12345
prng_0 = random.Random(seed)
prng_1 = random.Random(prng_0.rand_int(0))
Run Code Online (Sandbox Code Playgroud)

在那里,0是下限,但事实证明我需要给它一个上限.我不想设置固定的上限.

如果你对我的理由感到好奇,我这样做是因为我在测试时需要重复性.即,这是接收种子并构建其prng的prng_0函数,然后多次调用另一个需要每次接收不同种子的函数.

def funct_a(seed=None):
    prng_1 = random.Random(seed)
    prng_2 = numpy.random.RandomState(prng_1.randint(0, 4294967296))
    print(prng_1.random())
    print(prng_2.random())

def funct_b(seed=None):
    prng_0 = random.Random(seed)
    for i in range(0, 5):
        seed = prng_0.randint(0)  # not working, needs upper bound
        funct_a(seed)

funct_b(12345)  # test call
Run Code Online (Sandbox Code Playgroud)

编辑:有趣的是,numpy(我也在使用)有一个明确的上部种子值,由doc和这个错误证明

ValueError:Seed必须介于0到4294967295之间

Eri*_*ouf 5

当我不想要上限时,我经常使用sys.maxint上限作为近似值