码迷,mamicode.com
首页 > 编程语言 > 详细

LCG(linear congruential generator): 一种简单的随机数生成算法

时间:2018-11-11 17:18:34      阅读:533      评论:0      收藏:0      [点我收藏+]

标签:http   near   生成   ima   gen   不同的   分享图片   info   .com   

目录

LCG算法

LCG(linear congruential generator)线性同余算法,是一个古老的产生随机数的算法。由以下参数组成:

参数 m a c X
性质 模数 乘数 加数 随机数
作用 取模 移位 偏移 作为结果

LCG算法是如下的一个递推公式,每下一个随机数是当前随机数向左移动 log2 a 位,加上一个 c,最后对 m 取余,使随机数限制在 0 ~ m-1 内
技术分享图片

从该式可以看出,该算法由于构成简单,具有以下优点:

  • 计算速度快
  • 易于实现
  • 易于写入硬件

以下是针对不同参数 lcg 产生随机数的效果图

技术分享图片

可以看出,针对不同的参数,lcg产生的效果差别很大

以下是针对不同环境下的参数选择

技术分享图片

详见wiki

python 实现

def lcg(modulus, a, c, seed):
    while True:
        seed = (a * seed + c) % modulus
        yield seed

LCG(linear congruential generator): 一种简单的随机数生成算法

标签:http   near   生成   ima   gen   不同的   分享图片   info   .com   

原文地址:https://www.cnblogs.com/vancasola/p/9942583.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!