Java 中的概率

新手上路,请多包涵

我很想知道,如何在 Java 中实现概率?例如,如果变量显示的机会是 1/25,那么我将如何实现它?还是其他概率?请指出我的大致方向。

原文由 Jeel Shah 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 681
2 个回答

您将使用 Random 生成一个随机数,然后根据文字对其进行测试以匹配您尝试达到的概率。

所以给出:

 boolean val = new Random().nextInt(25)==0;

val 将有 125 的概率为真(因为 nextInt() 有偶数概率返回从 0 开始到 25(但不包括 25)的任何数字。)

您当然也必须 import java.util.Random;

正如下面所指出的,如果您获得了多个随机数,那么重用 Random 对象比一直重新创建它会更有效:

 Random rand = new Random();
boolean val = rand.nextInt(25)==0;

..

 boolean val2 = rand.nextInt(25)==0;

原文由 Michael Berry 发布,翻译遵循 CC BY-SA 3.0 许可协议

通常您使用随机数生成器。其中大多数返回区间 [0,1[ 中的数字,因此您将检查该数字是否小于 0.04。

 if( new Random().nextDouble() < 0.04 ) {  //you might want to cache the Random instance
   //we hit the 1/25 ( 4% ) case.
}

或者

if( Math.random() < 0.04 ) {
  //we hit the 1/25 ( 4% ) case.
}

请注意,有多个具有不同属性的随机数生成器,但对于简单的应用程序 Random 类应该足够了。

编辑: 我将条件从 <= 更改为 < 因为随机数的上限是排他性的,即最大返回值仍将<1.0。因此 x <= 0.04 实际上有略高于 4% 的机会,而 x < 0.04 是准确的(或与浮点数学一样准确)。

原文由 Thomas 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏