난수 시 뮬 레이 션 동전 던 지기 실험

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

좋은 웹페이지 즐겨찾기