4
http://blog.xkcd.com/2010/02/09/math-puzzle/에서 찾은 수학 퍼즐을 시뮬레이션하려고합니다. 그러나 자바 임의의 클래스 이상한 결과를 반환합니다. 아래 코드에서 예상 한 결과입니다. 출력은 첫 번째 줄의 경우 .612 정도이고 두 번째 줄의 경우 .49와 .51 사이입니다. int trials = 10000000; int success = 0; 제가Java Random Class는 진정으로 무작위가 아닙니다.
boolean a = r.nextBoolean();
double check = r.nextDouble();
에
double check = r.nextDouble();
boolean a = r.nextBoolean();
라인의 전환시
int returnstrue = 0;
for (int i = 0; i < trials; i++) {
Random r = new Random();
//double one = r.nextDouble()*10000;
//double two = r.nextDouble()*10000;
double one = 1;
double two = Math.PI;
double check = r.nextDouble();
boolean a = r.nextBoolean();
if(a)
{
returnstrue++;
}
if(a){
if((check>p(one)) && two > one)
{
success++;
}
if((check<p(one))&& two<one)
{
success++;
}
}
else{
if((check>p(two)) && two < one)
{
success++;
}
if((check<p(two))&& two>one)
{
success++;
}
}
}
System.out.println(success/(double)trials);
System.out.println(returnstrue/(double)trials);
그러나, 출력은 약 0.476 제 번호 및 0.710 제입니다. 이것은 nextBoolean() 메서드가 이후 구성에서 true의 70 %를 반환 함을 의미합니다. 나는 잘못된 것을하고 있습니까? 아니면 그냥 버그입니까?
@ bmargulies 나는 그것이 속는 사람이되기에 충분히 가깝다고 생각하지 않는다. 그러나 분명히 너무 현지화되어 있습니다. –
너무 많은 '무작위'물체를 가진 사람입니다. – bmargulies
Err, 그 제안 된 속마음은 전혀 속임수가 아닙니다! 문제는 난수 생성기가 루프 내에서 전혀 구성되지 않아서 완전히 다른 문제입니다. 나는 이중 질문을 닫는 것이지만, 단지 상상 속의 속임수가 아닌 실제 일 때만 :-) – paxdiablo