线性同余算法以及java中随机数的实现分析

        关于随机数的生成,其实方法有很多,主要分为两类,硬件生成和软件生成。

        先说下硬件生成的方法,芯片厂商intel出产的就有一种芯片,专门用于生成随机数,其原理是利用电阻和振荡器来产生噪声作为信息源生成随机数。噪声一般都是无规律的,因此利用此方法生成的肯定就是真随机数了。此芯片一般集成在intel芯片组中。其实我们一般见的电路中都是有噪声的,只不过该噪声对电路实现的功能影响不大,而且一般的电路都有减弱噪声的功能模块来削弱噪声。另外还有一些比较专业的产生真随机数的芯片厂商,实现方法是利用测不准原理。也就是说电子相对于原子核的位置和当前的时间关系是测不准的。一般学过高中化学的童鞋都听说过测不准原理。这种芯片在国内其实是经常用到的。比如我们的彩票行业。主要用这种方法来实现中奖号码的选取,之所以不用电路噪声来生成这里的随机数,那是因为电路噪声容易受到干扰,做过片上系统开发的童鞋也应该知道,我们针对芯片编写的程序,容易受到外界的干扰,比如在只读存储器上写的程序,受到紫外线照射后,程序容易丢失,在一般芯片上跑的程序,如果一辆汽车刚好经过这里,程序也会容易出错。呵呵。这些都是噪声影响了程序的运行。

        上面简单的说了下硬件生成的方法。其实我主要想说说软件的实现。在不同语言中,都有类似的实现方法。最流行的莫过于高德纳大师在TAOCP一书中描写的线性同余算法了。该算法能够生成伪随机数。

        算法的公式如下:

                X(n+1) = (a * X(n) + c) % m

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值