当前位置: 首页 > 面试题库 >

如何生成可重复的随机数序列?

乐正峰
2023-03-14
问题内容

我想要一个可以生成值的伪随机序列的函数,但是该序列在每次运行时都可以重复。我想要的数据必须合理地随机分布在给定的范围内,而不必是完美的。

我想根据随机数据编写一些可以对其进行性能测试的代码。我希望每台机器上的每个测试运行的数据都相同,但是出于存储原因,我不想随测试一起运送随机数据(最终可能会变成许多兆字节)。

random模块的库似乎没有说相同的种子在任何机器上总是给出相同的序列。

编辑:如果您要建议我播种数据(如上所述),请提供说明该方法有效的文档,并将适用于多种机器/实现。

编辑:Mac OS X上的CPython 2.7.1和PyPy 1.7以及CPython 2.7.1和CPython 2.52 = .2
Ubuntu似乎给出了相同的结果。不过,尚无文档以黑白方式对此进行规定。

有任何想法吗?


问题答案:

该文档没有明确指出提供种子将始终保证相同的结果,但是使用基于所使用算法的Python随机实现可以保证这一点。

根据文档,Python使用Mersenne
Twister
作为核心生成器。播种该算法后,将不会获得任何外部输出,该外部输出会更改后续调用,因此,给它相同的种子,您
获得相同的结果。

当然,您也可以通过设置种子并生成大量随机数列表并验证它们是否相同来观察到这一点,但是我知道不想孤单地信任它。

除了CPython之外,我还没有检查过其他Python实现,但是我非常怀疑它们会使用完全不同的算法来实现随机模块。



 类似资料:
  • 我希望能够在Clojure中使用生成可重复的数字。(具体地说,我希望对或incanter的的调用结果是可重复的,这些调用会调用,而后者又会调用)。 我从这个问题中琢磨出,如果我使用Clojure.data.generators,我可以重置随机状态: 但是,该方法似乎只影响Clojure.data.generators中的函数,这并不奇怪: 如何恢复随机状态,以便从中获得可重复的结果?到目前为止,我

  • 我正在尝试生成位随机数。我可以生成一个随机数,但这里的情况是生成一个位数字。我尝试通过将随机数存储在数组中来执行此操作,但我需要它以长长格式而不是数组。

  • 问题内容: 有人可以帮助我制定一种无需重复在Android中生成随机数的方法吗?最大数量是:这是我的JSON数组。并且返回值应为整数。 我已经拥有的是: 我将方法强制转换了3次,因为我需要3个随机生成的数字。它有效,但是我不知道如何避免重复。因此,这3个数字彼此之间不会相同。 谢谢 问题答案: 您是否尝试过仅使用Math.random()? 只要做一些铸造魔术,您就可以轻松开始了: 编辑: 如果要

  • 问题内容: 我想创建一组随机数,在Java中没有重复项。 例如,我有一个数组来存储10,000个从0到9999的随机整数。 这是我到目前为止的内容: 但是上面的代码创建重复项。如何确保随机数不重复? 问题答案: 例如:

  • 如何在1到9之间生成9个随机数,而不重复,一个接一个。它类似于:假设生成的第一个随机数是4,那么下一个随机数必须在[1,9]{4}中。我的第一种方法是将每个随机生成的数字添加到一个集合中,从而避免重复。但在更糟糕的情况下,比如我们已经生成了6个数字,我们必须再生成3个数字,这个过程会有点慢。当范围从[1,9]更改为[1,1000]时,这种方法听起来不正确。有人能提出一个替代方法吗。

  • 本文向大家介绍如何在Python中生成非重复随机数?,包括了如何在Python中生成非重复随机数?的使用技巧和注意事项,需要的朋友参考一下 接下来的程序会生成10个介于1到100之间的随机非重复整数。它会在给定的时间间隔内生成一个随机整数,如果先前未添加过该整数,则将其添加到列表中。