C语言基础:伪随机数计算机等级考试

文章作者 100test 发表时间 2010:02:04 02:25:07
来源 100Test.Com百考试题网


  大家可能很多次讨论过随机数在计算机中怎样产生的问题,在这篇文章中,我会对这个问题进行更深入的探讨,阐述我对这个问题的理解。

  首先需要声明的是,计算机不会产生绝对随机的随机数,计算机只能产生“伪随机数”。其实绝对随机的随机数只是一种理想的随机数,即使计算机怎样发展,它也不会产生一串绝对随机的随机数。计算机只能生成相对的随机数,即伪随机数。

  伪随机数并不是假随机数,这里的“伪”是有规律的意思,就是计算机产生的伪随机数既是随机的又是有规律的。怎样理解呢?产生的伪随机数有时遵守一定的规律,有时不遵守任何规律;伪随机数有一部分遵守一定的规律;另一部分不遵守任何规律。比如“世上没有两片形状完全相同的树叶”,这正是点到了事物的特性,即随机性,但是每种树的叶子都有近似的形状,这正是事物的共性,即规律性。从这个角度讲,你大概就会接受这样的事实了:计算机只能产生伪随机数而不能产生绝对随机的随机数。(严格地说,这里的计算机是指由冯诺依曼思想发展起来的电子计算机。而未来的量子计算机有可能产生基于自然规律的不可重现的 “真”随机数)

  那么计算机中随机数是怎样产生的呢?有人可能会说,随机数是由“随机种子”产生的。没错,随机种子是用来产生随机数的一个数,在计算机中,这样的一个“随机种子”是一个无符号整形数。那么随机种子是从哪里获得的呢?

  下面看这样一个C程序:

  //rand01.c

  #include

  static unsigned int RAND_SEED.

  unsigned int random(void)

  {

  RAND_SEED=(RAND_SEED*123 59)e536.

  return(RAND_SEED).

  }

  void random_start(void)

  {

  int temp[2].

  movedata(0x0040,0x006c,FP_SEG(temp),FP_OFF(temp),4).

  RAND_SEED=temp[0].

  }

  main()

  {

  unsigned int i,n.

  random_start().

  for(i=0.i


相关文章


什么是全国计算机等级考试?计算机等级考试
二级DOS环境考生应试指南计算机等级考试
全国计算机等级报名章程计算机等级考试
全国计算机等级考试疑问全解答计算机等级考试
C语言基础:伪随机数计算机等级考试
Java中的前期绑定和后期绑定计算机等级考试
JTree用法及JTree使用经验总结计算机等级考试
StringUtils工具类的常用方法计算机等级考试
JSP自定义标签的编写计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛