一个关于选择的小问题
来源:互联网 发布:淘宝店铺经营范围 编辑:程序博客网 时间:2024/06/05 06:53
以前看过这样一个问题:一个人参加有奖答题,主持人给出了A、B、C三个选项。这个不知道问题的答案,就随便选了一个选项。然后主持人排除了剩下两个答案中的一个,告诉这个人有一次改变自己选项的机会。请问:这时候这个人该不该改变自己的选项?
刚看到这个问题,我的第一反映是完全没必要,因为既然排除了一个错误选项,剩下两个选项中肯定是一个正确一个错误,那选谁都一样,反正对错都是50%。但是,真的是这样吗?
我写了一个程序来模拟这种选择。程序的原理:每次随机生成三个数字x,y,z,每次默认选择x,然后比较y和z的值,删去其中较小的那个。之后拿x和剩下的那个数字比较,如果x的值大,说明答案正确;反正,答案错误。因为三个数字都是随机生成,所以每次选择x或者y或者z不会影响结果。y和z其中较小的那个值不可能是最大值,所以可以删去。
程序清单如下:
我统计了十万组数据的结果,然后输出的答案让我很意外,是:33480 66520
很接近1:2的比例。也就是说,在不改变选项的情况下,这个人选项正确的概率应该是三分之一,错误概率应该是三分之二。
然后我想了一下,在这个人做选择的时候,三个选项的结果可能有三种(Y代表正确,N代表错误):
Y N N
N Y N
N N Y
刚看到这个问题,我的第一反映是完全没必要,因为既然排除了一个错误选项,剩下两个选项中肯定是一个正确一个错误,那选谁都一样,反正对错都是50%。但是,真的是这样吗?
我写了一个程序来模拟这种选择。程序的原理:每次随机生成三个数字x,y,z,每次默认选择x,然后比较y和z的值,删去其中较小的那个。之后拿x和剩下的那个数字比较,如果x的值大,说明答案正确;反正,答案错误。因为三个数字都是随机生成,所以每次选择x或者y或者z不会影响结果。y和z其中较小的那个值不可能是最大值,所以可以删去。
程序清单如下:
#include<stdio.h>#include<string.h>#include<stdlib.h>int main(){ int a,b; a=b=0; int x,y,z; while(a+b<1000000) { x=rand(); y=rand(); z=rand(); if(x==y||y==z||x==z) continue; if(y<z) { if(x>z) a++; else b++; } else { if(x>y) a++; else b++; } } printf("%d %d\n",a,b); return 0;}
我统计了十万组数据的结果,然后输出的答案让我很意外,是:33480 66520
很接近1:2的比例。也就是说,在不改变选项的情况下,这个人选项正确的概率应该是三分之一,错误概率应该是三分之二。
然后我想了一下,在这个人做选择的时候,三个选项的结果可能有三种(Y代表正确,N代表错误):
Y N N
N Y N
N N Y
也就是说,默认每次这个人都选择第一个,我们会发现,在这三种情况中,只有第一种选项是正确的,后面两种选项都是错误的。但是如果这个人选择改变自己的选项,那么后面两种情况他都会是正确的,只有第一种情况会是错误的。这样我们可以很明显地看到,改变选项是一种非常明智的做法。
还可以这样解释:在这个人做出选择之后,结果实际上就分成了两种,要么正确答案是这个人的选项,要么正确答案在剩下的选项里。第一种情况的概率是(1/3)*1=1/3,第二种情况的概率是(1/3)*2=2/3。在主持人删去一个选项之后,当前选项正确的概率是多少呢?是(1/3)/1=1。那么剩下的选项正确的概率是多少呢?(2/3)/(2-1)=2/3。这样考虑,当然应该选择改变自己的选项。
看到一个很有意思的东西:点这里
感觉世界观被改变了。
0 0
- 一个关于选择的小问题
- 关于JAVA import 的一个小问题
- 关于csdn博客的一个小问题
- 关于csdn博客的一个小问题
- 关于csdn博客的一个小问题
- 关于csdn博客的一个小问题
- 关于csdn博客的一个小问题
- 关于csdn博客的一个小问题
- 关于csdn博客的一个小问题
- 关于csdn博客的一个小问题
- 关于csdn博客的一个小问题
- 关于JAVA的一个小问题--请老鸟们帮下忙
- 关于strcmp的一个小问题
- 关于一个小问题的联想
- 号外:关于包的一个小问题
- 关于转型的一个小问题
- 关于FLEX的一个显示小问题
- 关于树状数组的一个小问题
- Enum 类型
- linux僵尸进程的处理
- python cookbook(一) 文本
- 电商 Fab 或将进行新一轮大规模裁员
- qt中xml文件的简单读取
- 一个关于选择的小问题
- 简单的网页效果
- Android之Adapter用法总结
- 由二叉树的两个遍历序列求另一个遍历序列
- boost的shared_ptr循环引用
- ZOJ-1082
- eclipse maven plugin 插件 安装 和 配置
- 建立完整游戏AI实践之1
- 黑马程序员_阶段练习&访问修饰符