java实现的一个简单算法(计算概率)
我被要求(作为家庭作业的一部分)设计一个Java程序,该程序执行以下操作:
基本上有3张卡片:
- 两边都是黑色的
- 两边都是红色的
- 一边是黑色,另一边是红色
现在如果我随便拿一张卡片放在桌子上。面朝上的一面是黑色的。另一边也是黑色的概率是多少
使用Java实现一个程序,并尝试发现概率,该程序应大量模拟卡片技巧,并应输出卡片另一侧为黑色的概率(通过计算另一侧为黑色的次数来实现)
然而,有人告诉我,我的代码是错误的(算法方面)。。。显然,答案不应该是0.50。我在试图理解算法时犯了错误吗
谁能给我指一下正确的方向吗?(我不是要求您提供一个完全可以工作的实现,只是关于算法应该如何工作)
# 1 楼答案
这张牌有六个面,我们假设它们的概率相等。有三张黑色的脸,其中两张的另一面是黑色的。我们放弃了所有红脸占上风的情况,所以我们只关注三个概率相等的黑脸
因此,另一张脸是黑色的概率实际上是2/3
# 2 楼答案
你的算法缺少一个关键步骤:把卡片放在桌子上。如果你抽到了黑色的红牌,当你放下它时,不能保证黑色的一面会显现出来。添加一个额外的步骤,模拟随机选择每张卡片的一面,然后确定有多少个案例显示黑色的脸,以及有多少案例显示黑色的卡片
# 3 楼答案
这可能有助于检查您正确实施的问题:假设您随机选择了至少一面为黑色的卡片,那么该卡片一面为黑色,另一面为红色的几率有多大
你没有正确执行的问题是:如果你看到的是一张这张脸上是黑色的卡片,那么另一张脸上是红色的几率有多大
请注意,有两张黑卡,但有三张黑脸
# 4 楼答案
这可能对算法没有帮助,但这是我自己得出答案的方式:
当你随机抽出一张卡片并把它放在桌子上时,有六种同样可能发生的事情:
在这六个项目中,六分之三的结果是桌子上有一张黑色的面朝上的卡片
在这三个事件中,正好有两个事件是黑牌的另一面
因此,问题的答案是“对方也是黑人的概率是多少?”是2/3
您的算法失败,因为您只计算作为单个事件出现的
black_black
卡,而实际上是两个# 5 楼答案
我认为你需要考虑红黑卡被抽到的两种可能性:红黑向上。这些概率之和就是红黑牌被抽走的概率
# 6 楼答案
这张两边都是红色的牌基本上(请原谅这个双关语)是一条红鲱鱼——不管怎么发,它都会变成红色,我们不需要再关心它了
只剩下红/黑和黑/黑卡片。同样,如果红色/黑色是红色的,我们不需要进一步注意。剩下的可能性是:
- 红色/黑色,黑色向上
黑色/黑色,第一面朝上黑色/黑色,第二面朝上
因为这三个中有两个的另一面是黑色的,所以概率是三分之二。