美文网首页
伪随机数算法生成高斯分布

伪随机数算法生成高斯分布

作者: 初七123 | 来源:发表于2019-05-11 17:14 被阅读0次

伪随机数算法

平方取中法(Middle-square method)是个产生伪随机数的方法,由冯·诺伊曼在1946年提出。

算法:

x(i+1)=(10^(-m/2)*x(i)*x(i))mod(10^m)

平方取中法计算较快,但在实际应用时会发现该方法容易产生 周期性明显的数列,而且在某些情况下计算到一定步骤后始终产生相同的数甚至是零,或者产生的数字位数越来越小直至始终产生零。所以用平方取中法产生伪随机 数数列时不能单纯使用公式,应该在计算过程中认为加入更多变化因素,比如根据前一个数的奇偶性进行不同的运算,如果产生的数字位数减少时通过另一种运算使 其恢复成m位。

线性同余法是目前应用广泛的伪随机数生成算法,其基本思想是通过对前一个数进行线性运算并取模从而得到下一个数,递归公式为

X(n+1) = (a * X(n) + c) % m

其中,各系数为:

  • 模m, m > 0
  • 系数a, 0 < a < m
  • 增量c, 0 <= c < m
  • 原始值(种子) 0 <= X(0) < m

其中参数c, m, a比较敏感,或者说直接影响了伪随机数产生的质量。
一般而言,m是2的指数次幂(一般232或者264),因为这样取模操作截断最右的32或64位就可以了。多数编译器的库中使用了该理论实现其伪随机数发生器rand()。

线性同余法的周期最大为m,但大部分情况都会少于m。要令线性同余法达到最大周期,应符合以下条件:

从均匀分布得到高斯分布

拒绝采样

The Box–Muller transform

The Box–Muller transform 把一对均匀分布随机数映射到一对标准正态分布随机数。

相关文章

  • 伪随机数算法生成高斯分布

    伪随机数算法 平方取中法(Middle-square method)是个产生伪随机数的方法,由冯·诺伊曼在1946...

  • python随机数生成算法

    python随机数生成算法# 现在程序中用的随机数,都是伪随机数算法生成的。例如线性同余法,平方取中法等。 1.梅...

  • MT19937 随机算法实现

    Mersenne Twister 算法译为马特赛特旋转演算法,是伪随机数发生器之一,其主要作用是生成伪随机数。此算...

  • Python初学系列random是Python的随机数标准库

    random是Python的随机数标准库import random计算机伪随机数是由梅森旋转算法生成的伪随机序列中...

  • 关于python中random标准库的使用

    random库是python中产生伪随机数的标准库。伪随机数:采用梅森旋转算法生成的随机序列 random库的基本...

  • 2019-07-09

    伪随机数,是通过一些数学算法生成的随机数,并非真正的随机数。密码学上的安全伪随机数应该是不可压缩的。对应的“真随机...

  • 生成随机数

    两个C函数 rand()函数生成的随机数是伪随机数,所谓伪随机数,指的是程序每次运行,生成的随机数都是不变的,生成...

  • 多线程环境下生成随机数

    生成伪随机数据 Java里有伪随机型和安全型两种随机数生成器。伪随机生成器根据特定公式将seed转换成新的伪随机数...

  • python中random模块功能详解(python工程狮)

    random — 生成伪随机数,random模块为各种分布实现伪随机数的生成。 1.random.random()...

  • 无处不在的随机数

    目录: 什么是随机数 随机数分类 伪随机数生成器 真随机数生成器 各种语言中的随机数 使用系统时间作为种子是否安全...

网友评论

      本文标题:伪随机数算法生成高斯分布

      本文链接:https://www.haomeiwen.com/subject/eoixaqtx.html