伪随机数生成算法

机器算法验证 算法 随机变量 随机生成
2022-03-21 02:49:28

现代和高质量的随机数生成器中使用了哪些算法?

4个回答

在 R 中,随机数生成的默认设置是:

  1. 对于 U(0,1),使用 Mersenne-Twister 算法
  2. 对于高斯数,使用标准正态分布函数的数值反演。

你可以很容易地检查这一点,即。

> RNGkind()
[1] "Mersenne-Twister" "Inversion"

可以将默认生成器更改为其他 PRNG,例如 Super-Duper、Wichmann-Hill、Marsaglia-Multicarry 甚至用户提供的 PRNG。有关详细信息,请参阅 ?RNGkind。我从来不需要更改默认的 PRNG。

默认情况下,C GSL库也使用Mersenne-Twister

Mersenne Twister是我之前遇到并使用过的一种

George Marsaglia 设计的 Xorshift PNG。它的周期 (2^128-1) 比 Mersenne-Twister 短得多,但该算法实现起来非常简单,并且适合并行化。在 DSP 芯片和 Nvidia 的 Tesla 等多核架构上表现良好。

http://prng.di.unimi.it/,您可以找到使用 TestU01 测试的几个随机数生成器的枪战,TestU01 是用于取代顽固和顽固的伪随机数生成器的现代测试套件。你可以挑选。