均匀分布随机数产生算法

本文探讨了随机数生成的重要性,特别是在彩票、游戏等领域。介绍了乘同余、Wichman-Hill和Marsaglia-Zaman三种算法,其中乘同余算法依赖于乘因子和加因子的选择,Wichman-Hill通过组合多个生成器提高周期,Marsaglia-Zaman算法因其高效性和良好的随机性而被广泛应用。
摘要由CSDN通过智能技术生成

一.随机数的意义

现实生活中,有很多场景需要用到“随机数”:

  • 彩票
  • 棋牌游戏中的洗牌和掷骰子
  • 游戏掉宝率

其中大部分是靠计算机软件生成的的“伪随机数”。伪随机数一般是由随机种子和随机算法计算生成的,也就是说,在随机种子和随机算法一定的情况下,伪随机数是可重复、可预测的。
简单来说,伪随机数具有循环长度。什么叫循环长度?就是如果第一次产生数字55,第二个产生数字107,那么循环多少次后,会继续产生55,107……这样的序列。大部分简单算法的循环长度都是2^32左右。

引用:https://www.jianshu.com/p/1904a2ef20cb

二.产生算法

1.乘同余算法

w(k)=[aw(k-1)+b]modN

其中,N是随机数列周期,一般选取为大素数,0<a<N为乘因子,b为加因子,通常选择0或者1,0<w(0)<N是数列的初始值,成为随机种子。

该算法对a,b的取值具有较大的依赖性。一般来说,我们可以使用以下两种取值,来获得长周期和不相关序列:</

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值