请教一个概率问题

knightzhuwei 2010-02-17 11:41:28
题目情景如下:

有A、B、C三个盒子 其中的一个盒子里放有宝物
甲知道宝物的位置 而乙不知道
现在甲声称:乙可以选择其中一个盒子 若恰好选中有宝物的盒子 则宝物就归乙所有
当乙选定其中的一个盒子例如A 而未打开时 B、C盒子中至少有一个是没有宝物的
于是甲打开其中没有宝物的盒子比如C 同时又声称 乙可以更换开始的选择 也就是在A,B中选择一个


这时的乙更不更换所选的盒子对选中宝盒是否有影响?
乙这时不改变选择选中宝盒的概率是多少?
改变选择后选中宝盒的概率是多少?
做出判断的依据是什么?
...全文
299 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gbb21 2010-05-22
  • 打赏
  • 举报
回复
P(X = 1) = 1/3
Because event t:(X != 2 || X != 3), P(t) = 1

P(X = 1 | t) = 1/3, if hold original selection

P(X != 1 | t) = 2/3, if make a change.

ntcome 2010-02-18
  • 打赏
  • 举报
回复
你现在有个大箱子,可以装两个盒子;你也有一个小箱子,可以装一个盒子。

你现在随机在三个盒子里面选择一个盒子,放在小箱子里面;把另外两个放在大箱子里面。
现在你问题是,小箱子有宝物概率和大箱子有宝物的概率。(当你选择大箱子时,甲会帮你把空的盒子拿出来)
arong1234 2010-02-18
  • 打赏
  • 举报
回复
问题在于:在掀开一个盒子之后,对盒子有没有宝物的概率和开始三个盒子的情况完全不一样。此时还是用3个盒子为起点来模拟本身就是错误的,因此必然结果也不对
引用 7 楼 ntcome 的回复:
for (int i = 0; i < times; i++) {
            int[] boxs = new int[3];//三个盒子
            int index = (int) (Math.random() * 3);//有奖的盒子所在
            boxs[index] = 1;
         


觉得这里有点问题:
每次试验,中奖的盒子的位置都是应该是固定的。
所以应该改为:
            int[] boxs = new int[3];//三个盒子
            int index = (int) (Math.random() * 3);//有奖的盒子所在
            boxs[index] = 1;
            for (int i = 0; i < times; i++) {
                    int choose = (int) (Math.random() * 3);//初次选择
arong1234 2010-02-18
  • 打赏
  • 举报
回复
读者毕竟不是数学刊物,他上面的东西不一定就是对的。我估计这个争论需要一个权威出来才能让大家信服
引用 4 楼 cody_yu 的回复:
一楼正解呀,肯定是会变化的。2/3在一开始你没选择的那两个盒子里面,而甲打开其中一个空盒子(一定有的)不影响这两个盒子的2/3概率,但是打开的盒子是0已经确定了,所以另外一个盒子自己独享2/3概率。自己写程序可以验证这个概率。
这个问题在十年前的《读者》上面见过。
ntcome 2010-02-18
  • 打赏
  • 举报
回复
for (int i = 0; i < times; i++) {
int[] boxs = new int[3];//三个盒子
int index = (int) (Math.random() * 3);//有奖的盒子所在
boxs[index] = 1;



觉得这里有点问题:
每次试验,中奖的盒子的位置都是应该是固定的。
所以应该改为:
int[] boxs = new int[3];//三个盒子
int index = (int) (Math.random() * 3);//有奖的盒子所在
boxs[index] = 1;
for (int i = 0; i < times; i++) {
int choose = (int) (Math.random() * 3);//初次选择
knightzhuwei 2010-02-18
  • 打赏
  • 举报
回复
换了种打开剩下两个盒子中的空盒子的算法 结果依然不变

public class Problem {

public static void problem(boolean flag, int times) {
int count = 0;
for (int i = 0; i < times; i++) {
int[] boxs = new int[3];//三个盒子
int index = (int) (Math.random() * 3);//有奖的盒子所在
boxs[index] = 1;
int choose = (int) (Math.random() * 3);//初次选择

//打开剩下两个盒子中的空盒子
int reflct=-1;
for (int k = 0; k < 2; k++) {
if(k!=choose&&boxs[k]==0){
reflct=k;
break;
}
}

if (flag) {
for (int j = 0; j < 2; j++) {
if (j != choose && j != reflct) {
if (boxs[j] == 1) {
count++;
}
}
}
} else {
if (boxs[choose] == 1) {
count++;
}

}
}
if(flag){
System.out.println("若选择换,"+times+"次试验得选中概率为"+(count*1.0/times));
}else{
System.out.println("若选择不换,"+times+"次试验得选中概率为"+(count*1.0/times));
}
}

public static void main(String[] args) {
problem(true, 5000);
problem(false, 5000);
}

}
knightzhuwei 2010-02-18
  • 打赏
  • 举报
回复
我写了个程序来验证这个情景

public class Problem {

public static void problem(boolean flag, int times) {
int count = 0;
for (int i = 0; i < times; i++) {
int[] boxs = new int[3];//三个盒子
int index = (int) (Math.random() * 3);//有奖的盒子所在
boxs[index] = 1;
int choose = (int) (Math.random() * 3);//初次选择

//打开剩下两个盒子中的空盒子
int reflct = (int) (Math.random() * 3);
while (reflct == choose || boxs[reflct] == 1) {
reflct = (int) (Math.random() * 3);
}


if (flag) {
for (int j = 0; j < 2; j++) {
if (j != choose && j != reflct) {
if (boxs[j] == 1) {
count++;
}
}
}
} else {
if (boxs[choose] == 1) {
count++;
}

}
}
if(flag){
System.out.println("若选择换,"+times+"次试验得选中概率为"+(count*1.0/times));
}else{
System.out.println("若选择不换,"+times+"次试验得选中概率为"+(count*1.0/times));
}
}

public static void main(String[] args) {
problem(true, 5000);
problem(false, 5000);
}

}


三次运行5000次的结果是
1、
若选择换,5000次试验得选中概率为0.4528
若选择不换,5000次试验得选中概率为0.3342

2、
若选择换,5000次试验得选中概率为0.4418
若选择不换,5000次试验得选中概率为0.3352

3、
若选择换,5000次试验得选中概率为0.4548
若选择不换,5000次试验得选中概率为0.3416

很奇怪 加起来并不是1 选择不换的概率应该是1/3没错 但是选择换的概率在0.45左右 是我的程序模拟有问题么?
Cody_Yu 2010-02-18
  • 打赏
  • 举报
回复
一楼正解呀,肯定是会变化的。2/3在一开始你没选择的那两个盒子里面,而甲打开其中一个空盒子(一定有的)不影响这两个盒子的2/3概率,但是打开的盒子是0已经确定了,所以另外一个盒子自己独享2/3概率。自己写程序可以验证这个概率。
这个问题在十年前的《读者》上面见过。
ntcome 2010-02-18
  • 打赏
  • 举报
回复
第一次选择,事件A,第二次选择,事件B

事件A时,选中宝物的概率Pa1=1/3,不选中的概率为Pa2=2/3;
事件B受事件A影响,事件B分为两种情况:
当不更改选择时,事件B只有一种选择:选择手里面那个,即概率为Pb1=1;
当更改选择时,事件B也只有一种选择:选择不在手里面的那个,即概率为Pb2=1;

你可以考虑下,有4个盒子的情况:
当不更改选择时概率=1/4*1=1/4;
当更改选择时的概率=3/4*1/2=3/8
arong1234 2010-02-18
  • 打赏
  • 举报
回复
这个是个著名的争论,争论的起因是很多人惘顾事实,在已经打开一个盒子之后,计算概率还是用打开盒子之前的样本群来计算的

很显然,当甲打开一个盒子之后,所有之前的选择和现在的选择已经没有任何关系了。剩下的两个盒子乙还是不知道哪个有宝物,且他们在哪个盒子不会因为甲打开一个盒子而发生概率变化。答案应该是各有1/2概率
ntcome 2010-02-18
  • 打赏
  • 举报
回复
按我的理解:
如果乙不更换所选的盒子,选中宝盒的
概率=1/3*1=1/3
如果乙更换所选的盒子,选中宝盒的
概率=2/3*1=2/3

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧