난수 시 뮬 레이 션 동전 던 지기 실험
1904 단어 계산법 초보
다음은 컴퓨터 로 큰 위조 랜 덤 수 를 만들어 동전 던 지기 시험 을 모 의 한다.동전 을 10 번 던진다 고 가정 하면 동전 을 던 질 때마다 정면 과 뒷면 을 얻 는 것 은 랜 덤 이다.동전 을 열 번 던 지 는 것 은 하나의 사건 을 구성한다.Random (2) 을 호출 하여 2 값 결 과 를 되 돌려 줍 니 다.0 으로 돌아 가 는 것 은 동전 을 던 져 뒷면 을 얻 는 것 을 의미 하고, 1 로 돌아 가 는 것 은 정면 을 얻 는 것 을 의미한다.다음 알고리즘 토스 코 인 스 는 동전 을 10 번 던 지 는 것 을 시 뮬 레이 션 합 니 다.메 인 프로그램 에서 함수 Toss Coins 로 동전 을 10 번 던 지 는 것 을 반복 합 니 다. 이 사건 은 50000 번 입 니 다.헤드 [i] (0 < = i < = 10) 로 이 50000 번 의 시 뮬 레이 션 을 기록 하면 i 번 의 정면 횟수 를 얻 을 수 있 습 니 다.최종 출력 시 뮬 레이 션 동전 던 지기 시간 은 긍정 적 인 이벤트 의 주파수 도 를 얻 을 수 있 습 니 다.
#include
#include
#include
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); // , 0
unsigned short Random(unsigned long n); // 0 n-1
double fRandom(void); // [0,1)
};
RandomNumber::RandomNumber(unsigned long s) //
{
if(s==0)
randSeed=time(0); //
else
randSeed=s; //
}
unsigned short RandomNumber::Random(unsigned long n) // 0 n-1
{
randSeed=multiplier*randSeed+adder;
return(unsigned short)((randSeed>>16)%n);
}
double RandomNumber::fRandom(void) // [0,1)
{
return Random(maxshort)/double(maxshort);
}
int TossCoins(int numberCoins)
{
//
static RandomNumber coinToss;
int i,tosses=0;
for(i=0;i