2009-12-15 44 views
14

我被要求(如作业的一部分)来设计一个Java程序,执行以下操作:简单的算法的执行情况(计算概率)


基本上有3张卡:

  • 黑色两侧
  • 红色两侧
  • 黑色一侧,红色的另一边

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

使用Java实现一个程序,并尝试发现概率,程序应模拟卡技巧大量次,并应输出卡的另一面是黑色的概率(它通过计算多少次对方也是黑色)。


但是我听说我的代码是错误的(算法明智)......显然答案不应该是0.50。我试图理解算法是否犯了错误?

任何人都可以指出我正确的方向吗? (我并不是要求你提供一个完整的工作实现,而仅仅是算法应该如何工作)。


这篇文章是非常有帮助的:http://www.codinghorror.com/blog/archives/001204.html?r=1183

+12

只是想指出,我真的很欣赏这是一项家庭作业的诚实,而且你表明你真的尝试过。 +1表示 – aperkins 2009-12-15 20:00:10

+0

听起来像是http://en.wikipedia.org/wiki/Monty_Hall_problem的变体 – Dolphin 2009-12-15 20:59:38

+2

并且在该链接之后,它看起来也是http://en.wikipedia.org/wiki/Bertrand% 27s_box_paradox – Dolphin 2009-12-15 21:00:48

回答

8

这可能不与算法的帮助,但是这是我怎么会得出自己的答案:

当你画一个随机卡,并把它放在桌子上,有六个同样可能发生的情况可能是:

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

在这六个事件中,6个事件中有3个导致桌面上的黑面向上卡。

在这3个事件中,恰好其中两个是卡片黑色的另一面。

因此,问题的答案是“对方也是黑色的概率是多少?”是2/3

算法失败,因为您只计算black_black卡作为单个事件发生,实际上它是两次。

+0

是的,我知道了!非常感谢你,马特,我从头开始实施你的建议,我得到2/3的所需概率。再次 谢谢,我标志着你的答案是正确的,因为它是最有帮助的。 – James 2009-12-15 21:14:01

7

你的算法缺少了关键的一步:把卡放在桌子上。如果您绘制黑红卡,则无法保证黑方在放下时显示。添加一个额外的步骤来模拟随机选择每张卡的一面,然后确定有多少箱显示黑色面,然后有多少箱显示黑色黑色卡。

+0

哦,对,我基本上做的是计算每次我画一张牌的概率,它是黑色的一面朝上,这是3/6。 我试图按照你所描述的方式来实现它,但是我得到了约0.75的概率。我可能做错了什么......用新代码编辑我的第一篇文章。 – James 2009-12-15 20:29:19

+1

你需要停止忽略红牌,并更加明确地绘制步骤,以了解发生了什么。 @大卫Thornley和@matt b都有正确的答案。 故事的寓意是:不要因为你不认为它们对结果有贡献而跳过算法中的步骤。 – 2009-12-15 20:37:26

+2

至于你为什么现在得到3/4 - 你的代码假设给定黑色的一面,另一面的红色或黑色的可能性是统一的 - 但事实并非如此!这正是你想要计算的!我建议完全采用不同的方法,让你的代码模拟所有可能的事件(不仅仅是那些黑色的一面),并计算出这些事件的可能性。 – 2009-12-15 20:52:01

0

我认为你需要考虑绘制红黑卡的两种可能性:红色侧面和黑色侧面。这些概率的总和将是红黑卡被抽出的概率。

4

卡片有六面,我们会假设它们具有相同的概率。有三个黑色的脸,其中两个黑色的另一边。我们丢弃所有红脸最高的情况,所以我们只关心三个黑脸,概率相等。

因此,其他人脸是黑色的概率实际上是2/3。

0

这可能有助于检查您已正确实施的问题:鉴于您已随机挑选至少一面为黑色的卡片,卡片一侧为黑色并且卡片为红色其他?

你没有正确实施的问题是:鉴于你正在看这张脸上是黑色的卡片,在另一张脸上它有红色的可能性是多少?

请注意,有两张黑卡,但有三张黑面。

0

两面红色的卡基本上(原谅双关语)一个红鲱鱼 - 任何方式处理,它会呈现红色,我们不需要再关心它。

只留下红/黑和黑/黑卡。再一次,如果红/黑色处于红色的一面,我们就不需要再关注了。剩余的可能性是:

  1. 红色/黑色,黑色向上
  2. 黑色/黑色,第一面朝上
  3. 黑色/黑色,第二侧朝上
由于两个这三个有另一侧的黑色的,概率是两列三个。