【问题标题】:Is there a way to implement a newer pseudo random number generator in Numpy有没有办法在 Numpy 中实现更新的伪随机数生成器
【发布时间】:2020-05-26 05:45:06
【问题描述】:

我想在 Numpy 中尝试不同的伪随机数生成器 (PRNG)。了解不同算法的比较主要是一种学术好奇心。 Numpy 是否有一种直接指向不同 PRNG 的方法,还是我需要更改源代码?

【问题讨论】:

  • 最近Generator 对np.random 的返工提供了MT19937, Philox, PCG64, SFC64。查看其文档

标签: python numpy statistics


【解决方案1】:

更改随机数生成不是提供的方法/您可以使用 python 做的事情,但是您可以更改生成的种子,但这对随机数的实际生成作用不大,Python 使用 Mersenne Twister 算法要生成它的随机数,如果你想改变算法,你需要改变它的源代码。我不知道它在哪里,但不久前我确实对这些东西进行了一些研究。这是所有随机数生成算法的 wiki 链接,我不建议对它们中的任何一个进行编码,因为它们很复杂,暗示了随机性的概念。 链接:

https://en.wikipedia.org/wiki/List_of_random_number_generators

此外,python 确实提供了多种生成形式,但是随机方法对于您可能想要使用的任何内容都非常稳定,如果您想要更快的方法,您可以使用 TinyMT,但您会再次使用需要手动编码。以下是所有随机方法的链接,包括种子:

https://docs.python.org/3/library/random.html

希望这会有所帮助,我建议不要尝试更改用于生成随机数的源代码,因为随机性只会真正成为安全性的一个因素,否则像 MT 这样的基本系统就可以了。

【讨论】:

  • 这是一个错误的答案。首先,无论 Python 有什么 RNG,它都无关紧要——Numpy 有自己独立的 RNG 设施。其次,任何 Python RNG 重新实现都不适用于 NumPY - 它不允许将 RNG 更改为超出提供的范围
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
  • 2013-01-08
  • 1970-01-01
  • 2015-05-05
相关资源
最近更新 更多