西西河

主题:麻烦问一下,电脑的随机数字是怎样产生的? -- 猫元帅

共:💬12 🌺12 新:
全看树展主题 · 分页首页 上页
/ 1
下页 末页
家园 麻烦问一下,电脑的随机数字是怎样产生的?

比如说,在0000到9999之间让电脑随机抽取一个数字,电脑是如何选择个位是几、十是几的呢?如果再随机抽取一个,重复的概率有多大?

或者,不加任何限制,电脑随机生成一个数字,这个数字无限长和只是一个1的概率哪个大?

有没有真正随机的数字呢?

家园 大概是这样的

如果不是用硬件产生随机数,如利用量子理论或者辐射,软件产生的随机数都是伪随机数。简单来说是这样的。

1、找一个数字做种子,一般是当前时间

2、使用确定的随机数算法,根据这个种子计算出一个数字,并排入序列

3、继续计算,一个好的随机算法应该满足生成的数字是尽可能均匀的,即从统计上看生成的数字序列里面的值是平均分布在数字区间里面的

具体的算法你可以去找找看。

家园 仅仅依赖硬件,产生纯随机数是个大难题

这个问题最后可以归结到计算机科学根本难题之一,P和NP问题。

所以计算机一般用伪随机数。最常见的一种取平均分布的算法是选取两个很大的质数,P1和P2,然后取P1的倍数除以P2的余数。其他的随机分布,可以根据这个随机数再计算产生。显然这不是纯随机数。

有些地方,比如赌博公司,对随机数要求很高,因此要借助计算机科学之外的办法。例如有个英国人就在他的网站上提供一些随机数,其来源是测量他养的金鱼每时每刻在鱼缸里的位置。

家园 还听说

有通过硬件收集的电子噪音信号来确定随机数的

家园 有个网站提供某一时刻撞击容器的原子数目,我想用来

填写彩票号码的来着

家园 这条金鱼最好不要睡觉
家园 如果你买的彩票用的不是这个数据岂不是白搭了?
家园 报告,不想中奖的就不是好彩民,可是太难了,从没指望能中奖
家园 那也没关系,再在门外树一个风速仪

用风速x金鱼位置,可保证永远绝对随机...

家园 不见得

生物是有活动规律的

风速和气候规律有关

所以这样数字,应该也不是绝对随机的

家园 电脑的随机数字是“伪随机数”

都是由数学方法计算产生的。

有形形色色的方法,不同方法产生的“伪随机数”的质量如何,比如周期的大小(“伪随机数”都是有周期的,过了周期开始循环),离均匀分布的偏差的大小,等等,有几个标准。

专门有一本书,是讲各种产生“伪随机数”的方法的。

家园 记得MS的Excel在2003版以前

用的随机数生成公式极为简单结果被高手轻易总结出来让MS相当下不来台...

结果2003版搞了个更复杂的,不知道有没有逆向出来...

全看树展主题 · 分页首页 上页
/ 1
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河