请教一个概率问题

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

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


这时的乙更不更换所选的盒子对选中宝盒是否有影响?
乙这时不改变选择选中宝盒的概率是多少?
改变选择后选中宝盒的概率是多少?
做出判断的依据是什么?
...全文
278 11 打赏 收藏 转发到动态 举报
写回复
用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,008

社区成员

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

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