LCG(linear congruential generator): 一种简单的随机数生成算法
Posted vancasola
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LCG(linear congruential generator): 一种简单的随机数生成算法相关的知识,希望对你有一定的参考价值。
目录
LCG算法
LCG(linear congruential generator)线性同余算法,是一个古老的产生随机数的算法。由以下参数组成:
参数 | m | a | c | X |
---|---|---|---|---|
性质 | 模数 | 乘数 | 加数 | 随机数 |
作用 | 取模 | 移位 | 偏移 | 作为结果 |
LCG算法是如下的一个递推公式,每下一个随机数是当前随机数向左移动 log2 a 位,加上一个 c,最后对 m 取余,使随机数限制在 0 ~ m-1 内
从该式可以看出,该算法由于构成简单,具有以下优点:
- 计算速度快
- 易于实现
- 易于写入硬件
以下是针对不同参数 lcg 产生随机数的效果图
可以看出,针对不同的参数,lcg产生的效果差别很大
以下是针对不同环境下的参数选择
python 实现
def lcg(modulus, a, c, seed):
while True:
seed = (a * seed + c) % modulus
yield seed
以上是关于LCG(linear congruential generator): 一种简单的随机数生成算法的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Linear16 PCM wav 转换为与 g711.org 相同质量的 G711 8-bit 8-khz MULAW wav?
codeforces 678D Iterated Linear Function 矩阵快速幂