2011年计算机二级C++实例编程辅导2_第2页

考试站(www.examzz.com)   【考试站:中国教育考试第一门户】   2011年11月10日

  // 产生种子

  RandomNumber::RandomNumber(unsigned long s)

  {

  if(s == 0)

  randSeed = time(0); //用系统时间产生种子

  else

  randSeed = s;

  }

  // 产生0 ~ n-1 之间的随机整数

  unsigned short RandomNumber::Random(unsigned long n)

  {

  randSeed = multiplier * randSeed + adder;

  return (unsigned short)((randSeed >> 16) % n);

  }

  // 产生[0, 1)之间的随机实数

  double RandomNumber::fRandom()

  {

  return Random(maxshort) / double(maxshort);

  }

  利用这个随机数类,写一个程序,模拟抛硬币的实验。

  抛10次硬币构成一个事件,每次事件记录得到正面的个数。反复模拟这个事件50,000次,然后对这50,000L次进行输出频率图,比较每次事件得到正面次数的比例。

  以下是总的代码:

  头文件 RandomNumber.h:

  代码

  // RandomNumber.h

  const unsigned long maxshort = 65535L;

  const unsigned long multiplier = 1194211693L;

  const unsigned long adder = 12345L;

  #ifndef RANDOMNUMBER_H

  #define RANDOMNUMBER_H

  class RandomNumber{

  private:

  // 当前种子


相关文章