计算机二级c_C 中随机数的设置计算机二级考试

文章作者 100test 发表时间 2009:07:25 10:37:53
来源 100Test.Com百考试题网


  编辑特别推荐:

  全国计算机等级考试(等考)指定教材

  全国计算机等级考试学习视频

  全国计算机等级考试网上辅导招生

  全国计算机等级考试时间及科目预告

  百考试题教育全国计算机等级考试在线测试平台

  全国计算机等级考试资料下载

  全国计算机等级考试论坛

  计算机等级考试四级应用题解析汇总

  2009年下半年全国计算机四级考试时间是2009年9月19日至23日。2009年下半年全国计算机四级考试报名时间会在考前两个月开始报名!更多优质资料尽在百考试题论坛 百考试题在线题库

  random和 rando多可以产生随机数,包含在stdlib.h里。
  random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过。但在C语言中int random(num)可以这样使用,它返回的是0至num-1的一个随机数。 可改用C 下的rand函数来实现。
  1、C 标准函数库提供一随机数生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数。 RAND_MAX必须至少为32767。rand()函数不接受参数,默认以1为种子(即起始值)。 随机数生成器总是以相同的种子开始,所以形成的伪随机数列也相同,失去了随机意义。(但这样便于程序调试)
  2、C 中另一函数srand(),可以指定不同的数(无符号整数变元)为种子。但是如果种子相同,伪随机数列也相同。一个办法是让用户输入种子,但是仍然不理想。
  3、 比较理想的是用变化的数,比如时间来作为随机数生成器的种子。 time的值每时每刻都不同。所以种子不同,所以,产生的随机数也不同。
  rand运用问题与解答:
  问:为什么有时rand()用它都是同一个数?如何产生一个真正随机数?
  答:之所以rand()每次的随机数都一样是因为rand()函数使用不正确。各种编程语言返回的随机数(确切地说是伪随机数)实际上都是根据递推公式计算的一组数值,当序列足够长,这组数值近似满足均匀分布。如果计算伪随机序列的初始数值(称为种子)相同,则计算出来的伪随机序列就是完全相同的。这个特性被有的软件利用于加密和解密。加密时,可以用某个种子数生成一个伪随机序列并对数据进行处理;解密时,再利用种子数生成一个伪随机序列并对加密数据进行还原。这样,对于不知道种子数的人要想解密就需要多费些事了。当然,这种完全相同的序列对于你来说是非常糟糕的。要解决这个问题,需要在每次产生随机序列前,先指定不同的种子,这样计算出来的随机序列就不会完全相同了。你可以在调用rand()函数之前调用srand( (unsigned)time( NULL ) ),这样以time函数值(即当前时间)作为种子数,因为两次调用rand函数的时间通常是不同的,这样就可以保证随机性了。你也可以使用srand函数来人为指定种子数。Windows 9x/NT的游戏FreeCell就允许用户指定种子数,这样用户如果一次游戏没有成功,下次还可以以同样的发牌结果再玩一次。
  例子:
  以下为引用的内容:
  #include <.stdlib.h>.
  #include <.iostream.h>.
  #include <.conio.h>.
  #include <.time.h>.
  void main()
  {
  srand( (unsigned)time( NULL ) ). //注意不要放在for循环里,否则产生的数是同一个数。
  for(int i=0.i<.100000.i )
  {
  cout<.<.rand()<.<.endl.
  }
  }

  2009年9月全国计算机等级考试时间及科目预告

  2009年NCRE考试有新变化

  2009年全国计算机等级考试-大纲

  全国计算机等级考试历年真题及答案

  2009年上半年全国计算机等级考试试题及答案



相关文章


计算机二级C语言辅导:指针与储物箱的关系计算机二级考试
计算机二级辅导:C语言中随机函数应用计算机二级考试
C 中的延时函数计算机二级考试
C语言生成随机数的函数、延时函数计算机二级考试
计算机二级c_C 中随机数的设置计算机二级考试
关键数据结构之数据流向计算机二级考试
0delete释放空间时出错的原因计算机二级考试
C_C 指令#undef,#ifdef,#ifndef,#if的用法计算机二级考试
计算机二级C技巧:c语言中的volatile关键字计算机二级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛