如何在 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 次,具体取决于你测试它的频率,或多或少。因为您的代码有效,所以我很确定。