2010-04-14 3 views
13

나는 주사위를 굴리고 각 값 1-6이 굴린 총 횟수를 기록하는 java 프로그램을 작성했습니다. 나는 6 백만 번 굴렀다.이것이 충분히 랜덤한지 어떻게 알 수 있습니까?

#of 0's: 0 
#of 1's: 1000068 
#of 2's: 999375 
#of 3's: 999525 
#of 4's: 1001486 
#of 5's: 1000059 
#of 6's: 999487 

가 (. 0 옵션이 아니었다)

임의의 주사위 롤이 유통 consistant은 다음과 같습니다 여기에 분포입니까? 어떤 객관적인 통계 테스트를 통해 주사위 굴림이 실제로 충분히 랜덤하다는 것을 확인할 수 있습니까?

EDIT : 응용 프로그램에 대한 질문 : 합리적으로 달성 할 수있는만큼 공정하고 싶은 게임.

+2

알고리즘을 "충분히 랜덤 한"것으로 판단하는 용도로 사용하는 응용 프로그램입니다. 또한 주문은 신청서에서 중요 할 수 있습니다. 당신의 상황에 대해 1이 "나쁘다"면 문자열. – strager

+1

배포가 충분히 일관성이 있습니다. random.org에서 시간을 보냈습니까? 당신이 시작할 수있는 좋은 장소 일 수 있습니다. – jcolebrand

+3

나는 이것이 당신이 점검해야 할 것이라고 생각한다. 반복 횟수가 많을수록 그 결과는 주사위 숫자 당 1/6에 가깝다. –

답변

5

이 특정 분포가 "공정한"다이빙으로 압연 된 예상 수치 분포와 일치하는지 테스트하려면 Pearson's Chi-square test을 수행해야합니다.

여전히 알고리즘이 "공평"하다는 것을 증명하지는 못하며, 이러한 특수한 결과는 "공평하게"보일뿐입니다.

알고리즘이 "공정한"것인지 여부를 테스트하려면 다른 사람들이 언급 한대로 Diehard tests을 사용하십시오.

+0

다이 하드 테스트는 어떻게 임의성을 보입니까? – David

+2

Diehard 테스트는 임의성을 보장하지 않습니다. 임의성을 보장 할 수있는 것은 없습니다. :-) Diehard 테스트는이 특정 구현이 "공정한"구현이 아니라는 통계적 증거를 찾는 특정 임의 생성기 구현에 대해 실행되도록 고안된 자동화 된 테스트 세트입니다. 귀하의 발전기 Diehard 테스트를 통과하면, 그것은 "공정한"이며 임의성이 보장된다는 의미는 아닙니다; 그것은 단지 "공정 할"가능성이 높다는 것을 의미합니다. –

4

난수 생성기가 디 하드 (Diehard) 테스트를 통과하면 최선을 다할 수 있습니다.

심지어 물리적 인 다이는 얼굴 당 1/6로 완벽하지 않습니다.

시련을 몇 배 증가시킨 다음 다시 시도하십시오. 각 임상 시험에 1/6을 받으면 괜찮을 것입니다.

+1

_ 각 얼굴마다 대략 1/6을 얻었습니다. 통계적으로 각 얼굴마다 정확히 1/6을 차지하지 않아야합니다. 이는 무작위가 아닙니다. – jcolebrand

+3

얼굴마다 정확히 1/6이 다른 가능한 결과와 비슷합니다. 나는 누군가가 결과적으로 그것을 결코 "결코"가져야한다고 말하지 않을 것이다. – jemfinch

+0

나는 이미 6 백만 번의 시련을 겪고 있습니다. 그 정도면 충분하지 않습니까? Diehard 테스트는 무엇입니까? – David

1

이 테스트만으로는 난수를 결정할 수 없습니다. 그것이 완전히 쓸모가있는 것은 아니지만, 1,2,3,4,5,6과 반복을 출력하는 "무작위"주사위 롤러는이 테스트에 따라 완전히 무작위입니다.

또 다른 추천 테스트 : 숫자 x를 선택하고 굴릴 때마다 다음에 나오는 숫자의 통계를 기록하십시오. 다시 균등 분포가 나타납니다. x의 6 개 값 모두에 대해 반복하십시오. 이 테스트를 통과하면 주사위 롤러로 사용하기에 무작위 적입니다.

0

6'000'000 주사위 굴림 확률은 정확히 1'000'000에서 끝납니다. 각 결과는 0에 가깝습니다. 결과가 올바른 경우 합계와 오차 (오차) 시도 횟수가 증가하면 예상 결과와의 차이가 0 (상대적으로)으로 이동하고 임의의 함수가 잘못되지 않습니다.

수학적으로 증명하거나 더 크고 큰 시험 시퀀스로 임의 함수를 테스트하여 수렴하는지 확인할 수 있습니다.

반복 된 테스트의 경우 각 결과의 합계는 가우스 분포와 비슷해야합니다. 예 : 각각의 결과 1-6은 주사위 롤 수에 반비례하는 분산으로 약 1,000'000을 중심으로하는 정규 분포 내에 있어야합니다.

다른 테스트 인 Diehard 테스트는 주사위 롤의 실제 시퀀스가 ​​무작위로 테스트되었으며, 예를 들어 6,000,000 롤의 결과가 100'000 연속 1,이어서 100'000 2 그리고 마지막으로 몇 가지 무작위 순서.

+0

분산에 대한 자세한 내용, 그 의미 및 계산 방법은 무엇입니까? – David

+0

분산은 변수가 "임의"인 방법에 대한 척도입니다. 6 라운드를 사용하여 주사위 난수를 테스트하면 각 결과마다 큰 차이가 발생하지만, 6'000'000 배를 테스트하면 분산이 훨씬 더 낮아집니다. 분산으로 분산을 생각하십시오. Aynyway, Diehard 테스트는 임의성 테스트에 더 적합합니다. – Ernelli

관련 문제