随机数算法

1.线性同余算法


LCG(linear congruential generator)是一种伪随机数算法

LCG 算法数学上基于公式:

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

不能用于加密

http://www.cnblogs.com/xkfz007/archive/2012/03/27/2420154.html



2.梅森旋转算法(Mersenne twister)

是一个伪随机数算法。由松本真和西村拓士在1997年开发,基于有限二进制字段上矩阵线性递归,快速产生高质量随机数。

http://blog.csdn.net/xiaogou56a/article/details/23040173


http://blog.csdn.net/xiadasong007/article/details/18819463



3.XORshift随机数产生算法


http://en.wikipedia.org/wiki/Xorshift


你可能感兴趣的:(Algorithm)