java - 一个简单算法的实现(计算概率)

标签 java algorithm probability

有人要求我(作为家庭作业的一部分)设计一个 Java 程序来执行以下操作:


基本上有3张牌:

  • 两面都是黑色
  • 两边都是红色
  • 一边是黑色,一边是红色

现在如果我随机拿一张牌放在 table 上。朝上的一面是黑色的。对方也是黑的概率是多少?

使用 Java 实现一个程序并尝试发现概率,该程序应该模拟纸牌戏法很多次并且应该输出纸牌另一面是黑色的概率(它通过计算多少次来实现)另一边也是黑色的)。


但是我被告知我的代码是错误的(算法方面)......显然答案不应该是 0.50。我在尝试理解算法时是否犯了错误?

谁能指出我正确的方向? (我不是要你提供一个完整的工作实现,只是关于算法应该如何工作)。


这篇文章很有帮助:https://blog.codinghorror.com/finishing-the-game/

最佳答案

这可能对算法没有帮助,但这是我自己推导出答案的方式:

当您随机抽取一张牌并将其放在 table 上时,可能会发生六种同样可能的事情:

  1. 您选择 R/R 卡并将其红色面朝上放置。
  2. 您选择 R/R 卡并将另一张红色面朝上。
  3. 您选择 B/R 卡并将其黑色面朝上放置。
  4. 您选择 B/R 卡并将其红色面朝上放置。
  5. 您选择 B/B 卡并将其黑色面朝上放置。
  6. 您选择 B/B 卡并将另一张黑色面朝上。

在这 6 个事件中,6 个事件中有 3 个会导致桌面上出现一张黑面朝上的牌。

在这 3 个事件中,恰好有两个事件的另一面是黑牌。

因此问题“另一边也是黑色的概率是多少?”的答案是2/3

您的算法失败了,因为您只将出现的 black_black 卡片计为单个事件,而实际上它是两个。

关于java - 一个简单算法的实现(计算概率),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1909952/

相关文章:

Java : Convert string to use in url as part of a get

java - 如何以给定的概率传播随机值?

java - Elasticsearch Rest 客户端更新操作

java - android studio 支持.v7

algorithm - 如何有效地计算冒泡排序迭代的次数?

python最低共同祖先

java - 在潜在语义索引方面需要帮助

c++ - 带有循环和消除的随机生成概率游戏

algorithm - 什么是概率数据结构?

java - 如果在 JUnit 和 Spring 中使用测试监听器, Autowiring 将不起作用