我正在尝试模拟我在http://blog.xkcd.com/2010/02/09/math-puzzle/上找到的数学难题。但是,java 随机类返回奇怪的结果。在下面的代码中,结果是预期的。第一行的输出在 0.612 左右,第二行的输出在 0.49 和 0.51 之间。整数试验 = 10000000;诠释成功 = 0;
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);
但是,当我切换
double check = r.nextDouble();
boolean a = r.nextBoolean();
到
boolean a = r.nextBoolean();
double check = r.nextDouble();
第一个数字的输出约为 0.476,第二个数字约为 0.710。这意味着 nextBoolean() 方法在后面的配置中有 70% 的时间返回 true。我做错了什么还是这只是一个错误?