【问题标题】:75% probability in JavaJava 中 75% 的概率
【发布时间】:2019-12-24 02:44:37
【问题描述】:

如何在 java 中使用这种格式实现 3/4 或 75% 的概率?

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

【问题讨论】:

  • 我认为那是 nextInt(4)。
  • 它必须是 nextInt(4),它返回 0 有 25% 的机会,1 有 25% 的机会,2 有 25% 的机会,3 有 25% 的机会。然后检查该值是其中三个之一还是不是其中之一。
  • 欢迎来到 Stack Overflow!我不知道为什么你会得到这么多的反对票;在我看来,这是一个非常明确的问题,您已经收到了一些答案。也许反对者会自己解释。
  • @ChristianConkle 我猜他们因为缺乏研究努力而投了反对票。或者可能是因为他从here“借用”了他的代码,但没有这么说,或者试图理解该代码并相应地更改它。但我只是猜测。

标签: java probability


【解决方案1】:

类似的,

Random rand = new Random();
int val = rand.nextInt(4) + 1;
if (val == 1) { // <-- 1/4 of the time.
} else { // <-- 3/4 of the time.
}

Random.nextInt(int) 返回返回介于 0(包括)和指定值(不包括)之间的伪随机、均匀分布的 int 值。所以,到 0-4(不包括)是 (0-3),如果再加 1,结果就是范围 (1-4)。

你也可以使用Random.nextDouble()like,

if (rand.nextDouble() < 0.75) { // <-- 75% of the time.
}

【讨论】:

    【解决方案2】:

    一种适用于任何整数百分比的简单方法是:

    boolean val = rand.nextInt(100) < 75;
    

    【讨论】:

    • 我可能错了,但这不应该是(rand.nextInt(100) + 1) &lt; 75;吗? 0-99 的范围可能会稍微改变 75% 的几率。
    • @Tom - 如果你想要 1% 怎么办?还是100%?想想吧。
    【解决方案3】:

    以下内容也是有效且有些直观的,因为许多人都认为概率是介于 0 和 1 之间的值:

    Math.random() < 0.75
    

    当然,这是一样的

    Random rand = new Random();
    rand.nextDouble() < 0.75
    

    已在接受的答案中提到。

    需要注意的重要一点是后者比前者更有效。 Pete 在 Oracle 社区论坛上提供了 explanation 说明为什么会这样。

    【讨论】:

      【解决方案4】:

      试试这个:

      rand.nextInt(4) < 3
      

      【讨论】:

      • 所以他有0% 的机会?编辑:这不只是 25% 吗? rand.nextInt(4) &lt; 3 不是更有意义吗?
      • 这几乎是正确的。但这是 25% 的机会,而不是 75% 的机会。你应该成功!= 0。
      猜你喜欢
      • 2012-01-01
      • 2020-12-28
      • 1970-01-01
      • 1970-01-01
      • 2021-06-19
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多