// 產(chǎn)生種子
RandomNumber::RandomNumber(unsigned long s)
{
if(s == 0)
randSeed = time(0); //用系統(tǒng)時間產(chǎn)生種子
else
randSeed = s;
}
// 產(chǎn)生0 ~ n-1 之間的隨機整數(shù)
unsigned short RandomNumber::Random(unsigned long n)
{
randSeed = multiplier * randSeed + adder;
return (unsigned short)((randSeed >> 16) % n);
}
// 產(chǎn)生[0, 1)之間的隨機實數(shù)
double RandomNumber::fRandom()
{
return Random(maxshort) / double(maxshort);
}
利用這個隨機數(shù)類,寫一個程序,模擬拋硬幣的實驗。
拋10次硬幣構(gòu)成一個事件,每次事件記錄得到正面的個數(shù)。反復(fù)模擬這個事件50,000次,然后對這50,000L次進行輸出頻率圖,比較每次事件得到正面次數(shù)的比例。
以下是總的代碼:
頭文件 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:
// 當(dāng)前種子
相關(guān)推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |