利用伪随机数模拟抛硬币实验。得到事件频率图
#include <bits/stdc++.h>
using namespace std;
const unsigned long maxshort =65536L;
const unsigned long multiplier = 1194211693L;
const unsigned long adder = 12345L;
class RandomNumber {
private :
unsigned long randSeed;
public:
RandomNumber(unsigned long s=0);
unsigned short Random(unsigned long n);
double fRandom(void);
};
RandomNumber::RandomNumber(unsigned long s){
if(s==0)
randSeed=time(0);
else
randSeed=s;
}
unsigned short RandomNumber::Random(unsigned long n){
randSeed = multiplier * randSeed +adder;
return (unsigned short)((randSeed>>16)%n);
}
double RandomNumber::fRandom(void){
return Random(maxshort)/double(maxshort);
}
int TossCoins(int numberCoin){
static RandomNumber coinToss;
int i,tosses=0;
for(i=0;i<numberCoin;i++)
tosses+=coinToss.Random(2);
return tosses;
}
int main()
{
const int NCOINS