几种生成随机数的方法

随机数在很多程序中经常被用到,但每次用到的时候,由于没有系统的总结,总是得重新查阅,所以这次打算系统的介绍一下c/c++中如何产生随机数,以备以后查阅。随机数服从的分布常用的有均匀分布和高斯分布,所以这里仅介绍这两种。

均匀分布

这里介绍三种生成服从均匀分布随机数的方法:线性同余法,梅森旋转算法和Multiply-With-Carry算法。

线性同余法

线性同余法是一个很古老的随机数生成算法,它的数学形式如下:

\[X\_{n+1} = (aX\_n + c)(\mod{m})\] 其中,\[m>0,0<a<m, 0<c<m\]

Read More