暂时设置随机种子,例如"new Random()"

Sop*_*ert 12 python random

在Python中,使用某个种子生成一些随机数但不重新设置全局状态的最佳方法是什么?在Java中,您可以简单地写:

Random r = new Random(seed);
r.nextDouble();
Run Code Online (Sandbox Code Playgroud)

并且标准Math.random()不会受到影响.在Python中,我能看到的最佳解决方案是:

old_state = random.getstate()
random.seed(seed)
random.random()
random.setstate(old_state)
Run Code Online (Sandbox Code Playgroud)

这是惯用的Python吗?它似乎不如Java解决方案那么干净,不需要"恢复"旧种子.我很想知道是否有更好的方法来做到这一点.

sen*_*rle 23

您可以实例化自己的Random对象.

myrandom = random.Random(myseed)
Run Code Online (Sandbox Code Playgroud)

random模块管理自己的实例Random,该实例不受更改的影响myrandom.

  • @BenAlpert,是的,当我去仔细检查时,我也做了.但是我知道我以前在`dir(随机)`中看过`Random`,当我看的时候它就在源头.不确定为什么`Random`类本身在文档中没有自己的列表. (2认同)