您现在的位置: 主页 > 新2手机网址 > 正文

mt19937 遂机数

2018-09-23 07:36  来源:未知   字号:T | T

  壹下情节整顿理己网绕资源:

  我们讲的遂机数实则阴暗指新2网站。不微少对象能想到C言语的rand(),却惜此雕刻个函数产生的遂机数遂机性什分差,同时快度很缓,置信信直不能胜于任普畅通的运用。

  新鲜的LCG(linear congruential generator)代表了最好的新2网站产生器算法。首要缘由是轻善了松,轻善完成,同时快度快。此雕刻种算法数学上基于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比较敏感,容许说直接影响了新2网站产生的品质。

  普畅通而言,高LCG的m是2的指数次幂(普畅通2^32容许2^64),鉴于此雕刻么取模操干截断最右的32或64位就却以了。微少半编译器的库中运用了该即兴实完成其新2网站新2网站rand()。下面是片断编译器运用的各个参数值:

  Source

  m

  a

  c

  rand() / Random(L)的种儿子位

  Numerical Recipes

  2^32

  1664525

  1013904223

  ?

  Borland C/C++

  2^32

  22695477

  1

  位30..16 in rand(), 30..0 in lrand()

  glibc (used by GCC)

  2^32

  1103515245

  12345

  位30..0

  ANSI C: Watcom, Digital Mars, CodeWarrior, IBM VisualAge C/C++

  2^32

  1103515245

  12345

  位30..16

  Borland Delphi, Virtual Pascal

  2^32

  134775813

  1

  位63..32 of (seed * L)

  Microsoft Visual/Quick C/C++

  2^32

  214013

  2531011

  位30..16

  Apple CarbonLib

  2^31-1

  16807

  0

  见Park–Miller遂机数新2网站

  LCG不能用于遂机数要寻求高的场合,比如不能用于Monte Carlo仿造,不能用于加以稠密运用。

  LCG拥有壹些严重的缺隐,比如假设LCG用做N维当空的点背靠标注,此雕刻些点至多位于m1/n超平面上(Marsaglia定理),此雕刻是鉴于产生的接踵X(n)值的相干所致。

  佩的壹个效实坚硬是假设m设置为2的指数,产生的低位前言列周期远远小于所拥有。

  普畅通而言,输入前言列的基数b中最低n位,bk=m (k是某个整顿数),最父亲周期bn.

  拥有些场合LCG拥有很好的运用,比如内存放很生厌乱的嵌入式中,电儿子游玩把持台用的小整顿数,运用高位却以胜于任。

  LCG的壹种C++完成版本如次: