如何在 Java 中正确实现概率?
How can I correctly implement probability in Java?
我似乎遇到了一个问题,我不知道它为什么会发生,它开始看起来像巫术。这是我尝试实现概率的方式:
int odd = (int)(100.0 * Math.random()); //Number between 1 and 100
if(odd<=50){ //50% chance
System.out.println("Lucky");
}
但是,当我像这样放置它时,奇数总是低于 50,如果我将“<”更改为“>”,它总是生成大于 50 的数字,这使得 if 语句每次都会发生。
对我来说运行很好,我没有发现你的代码有什么问题。它可能只是连续生成了很多满足声明的随机数。
我不明白你遇到了什么问题。我试过这段代码:
int b = 0;
for(int i = 0; i <100000;i++){
int odd = (int) (100.0 * Math.random()); //Number between 1 and 100
if (odd < 50) { //50% chance
System.out.println("Lucky");
b++;
} else {
System.out.println("Unlucky");
}
}
System.out.println("Lucky tries : " + b);
System.out.println("Unlucky tries : " + (100000 - b));
}
它给了我以下结果
Lucky tries : 50060
Unlucky tries : 49940
我认为你只是运气不好或其他原因,所以你得到了 10 或 100 次,具体取决于你测试它的频率,或多或少。因为您的代码有效,所以我很确定。
我似乎遇到了一个问题,我不知道它为什么会发生,它开始看起来像巫术。这是我尝试实现概率的方式:
int odd = (int)(100.0 * Math.random()); //Number between 1 and 100
if(odd<=50){ //50% chance
System.out.println("Lucky");
}
但是,当我像这样放置它时,奇数总是低于 50,如果我将“<”更改为“>”,它总是生成大于 50 的数字,这使得 if 语句每次都会发生。
对我来说运行很好,我没有发现你的代码有什么问题。它可能只是连续生成了很多满足声明的随机数。
我不明白你遇到了什么问题。我试过这段代码:
int b = 0;
for(int i = 0; i <100000;i++){
int odd = (int) (100.0 * Math.random()); //Number between 1 and 100
if (odd < 50) { //50% chance
System.out.println("Lucky");
b++;
} else {
System.out.println("Unlucky");
}
}
System.out.println("Lucky tries : " + b);
System.out.println("Unlucky tries : " + (100000 - b));
}
它给了我以下结果
Lucky tries : 50060
Unlucky tries : 49940
我认为你只是运气不好或其他原因,所以你得到了 10 或 100 次,具体取决于你测试它的频率,或多或少。因为您的代码有效,所以我很确定。