首先需要声明的是, 计算机不会产生相对随机的随机数, 计算机只能产生“伪随机数”。 其实相对随机的随机数只是一种理想的随机数, 它也不会产生一串相对随机的随机数。 伪随机数并不是假随机数, 这里的“伪”是有规律的意思, 有时不恪守任何规律;伪随机数有一部分恪守一定的规律;另一部分不恪守任何规律。 比如“世上没有两片形状完全相反的树叶”, 这正是点到了事物的特性, 即随机性, 这正是事物的共性, 你大约就会承受这样的理想了:计算机只能产生伪随机数而不能产生相对随机的随机数。 这里的计算机是指由冯诺依曼思想开展起来的电子计算机。 而未来的量子计算机有能够产生基于自然规律的不可重现的“真”随机数) 那么计算机中随机数是怎样产生的呢?有人能够会说, 随机数是由“随机种子”产生的。 那么随机种子是从哪里取得的呢? 上面看这样一个C程序: 这个程序(rand01. c)完好地阐述了随机数产生的过程: random用来根据随机种子RAND_SEED的值计算得出随机数, 其中这一句: 是用来计算随机数的办法, 随机数的计算办法在不同的计算机中是不同的, 即使在相反的计算机中装置的不同的操作零碎中也是不同的。 这说明它们的计算办法不同。 现在, 我们明白随机种子是从哪儿取得的, 而且晓得随机数是怎样经过随机种子计算出来的了。 那么, 随机种子为什么要在内存的0040:006CH处取??040:006CH处存放的是什么? 学过《计算机组成原理与接口技术》这门课的人能够会记得在编制ROMBIOS时钟中缀效劳程序时会用到Intel8253定时/计数器, 在我们计算机的主机板上都会有这样一个定时/记数器用来计算以后零碎时间, 而这个记数器的值存放在哪儿呢?没错, 就在内存的0040:006CH处, 其实这一段内存空间是这样定义的: 时钟中缀效劳程序中, 每当TIMER_LOW转满时, 此时, 记数器也会转满, rand01. c中的
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
新人写c语言代码会犯的滑稽错误
新人学习C语言的滑稽代码和错误分析。
#include 赋值 i++ -
初识C语言
简述初识c语言的心得
初识c语言