汇编网首页登录博客注册
dpjf的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
友情链接

[2008-07-23 22:43] 计算机产生随机数的原理是什么?

计算机是根据内部的什么器件产生随机数的??
评论次数(2)  |  浏览次数(2543)  |  类型(默认类型) |  收藏此文  | 

[  游客   发表于  2008-07-24 09:05  ]

计算机做不到真正的随机,所有的计算机随机都是“伪随机”,算法不同而已,绝大部分都是用时间作随机种子。但为了防止脉冲取数造成的相同,除了用时间之外,在电脑里有事先做好的随机数序列,然后采用时间法从某个位置取其中的一段,以保证更加“随机”。这个序列在主板的某个芯片里,长度有几十K,这些内容在计算机体系结构课程中有所描述。

什么是“伪随机数”呢?因为实际上要保证每次生成的随机数都不同,那是不太可能的,我们唯一能做到的只能是尽量使每次生成的数字与前面的不同,并且尽量使生成的数字均匀分布在指定的范围内。 

用单片机的计数器产生,有两种方法供选用: 

(1)单次操作完毕后,单片机的计数器一直不停地计数,在外界对它进行再次操作或者要发送数据时停止计数。因为外界的操作或发送的时间是不定的,所以计数寄存器里面的数是随机的。 

(2)可以对按键或操作时间进行计时。用户每次按键或操作的时间都是不定的,并且按键从抖动到稳定的时间也是不定的,对它进行计时,如果把间隔的时间取得合适,即可得到近似随机数。


在用计算机编制程序时,经常需要用到随机数,尤其在仿真等领域,更对随机数的产生提出了较高的要求,仅仅使用C语言类库中的随机函数已难以胜任相应的工作。本文简单的介绍随机数产生的原理及符合某种分布下的随机变量的产生,并用C语言加以了实现。当然,在这里用计算机基于数学原理生成的随机数都是伪随机数。(这里可参考: http://blog.163.com/yuson_yan/blog/static/13811817200711283193839/ )

       注:这里生成的随机数所处的分布为0-1区间上的均匀分布。我们需要的随机数序列应具有非退化性,周期长,相关系数小等优点。

在网上找了些相关信息,具体细节,博主可自行找资料研究,这是一个不小的话题,呵呵。

[  游客   发表于  2008-07-24 09:24  ]

我也找到一个 呵呵 http://www.luocong.com/articles/show_article.asp?Article_ID=24

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码