西西河

主题:【讨论】【跟进】趣味数学题 (三) -- 数值分析

共:💬53 🌺38 新:
全看树展主题 · 分页 下页
家园 【讨论】【跟进】趣味数学题 (三)

这个帖子是 我 数值分析:【讨论】【跟进】趣味数学题 (二) 的跟进.

这人气真是个奇妙的东西,我自己发的故事自己讨论,热度和 @任爱杰 老兄的转载帖子完全没得比,可以说应者寥寥啊. 不过在不多的回复中,

@审度 审度:题不达意呗 和 @孟词宗

孟词宗:原题本身表述不清吧 两位同学 指责我原来的题目表述不严谨,是误导观众.

这里先澄清一下.原始的故事并不是我发在西西河里的,而是发在另一个地方.并且在首发的时候也不是作为一个帖子,而是一篇日志.日志么,主要是记录自己生活中的有趣的想法,本意并不在严肃讨论,而是开玩笑性质更多. @ 孟词宗 老兄 也在那里,应该知道我在首发的时候也明确说了,这篇故事的目的不过是 "碰瓷,骗点点击"

蒙 @任爱杰 同学不弃,将我那篇转到了河里,才引起了很多严肃的讨论. 这在上一篇里我已经感谢过了.

既然大家这么有兴致,不妨我把这个故事改写得严密一些,因为老铁不允许修改原帖,我把新的版本写在这里如下:

-----------------------------------------

今天听到一个例子,很适合说明怎么叫概率推断,或者概率推断会有多反直观.

比如新来了一家邻居,我知道该邻居家有两个孩子,但不知道任何关于这两个孩子的其他情况.

有一天我出门正看见新邻居正拿着全套的星战行头回家,突然意识到今天是5月4日,于是上前和邻居打招呼到:"May the force be with you!".邻居认出我来,显得颇有些尴尬,赶忙解释道"不不,这不是我的,是我给我儿子买的,他是个星战迷."

我心里默默推算,嗯,原来邻居有个儿子,那么邻居家另一个孩子也是男孩的概率为三分之一(对,这不是笔误,三分之一,不是二分之一).


本帖一共被 1 帖 引用 (帖内工具实现)
家园 其实,不用那么麻烦,给你等效一下下

你有两个钢蹦儿,扔了一个出来,为正面;另一个扔出以后,仍然为正面的概率是多少?1/2还是1/3?

家园 你这个不是等效

等效应该是这样的:

你一次扔了两个钢蹦儿,用两个纸杯盖住结果,打开第一个纸杯,发现是正面,然后问河友,第二个钢镚是正面的概率是多少?

家园 为什么不是一儿一女和两个儿子的可能各占一半呢?

注意,我问的不是为什么像你说的那样,是为什么不像我说的那样,你能回答么?

也许再争下去也没意义,不如用计算机模拟一下,我就写了个程序来模拟结果是1/2,把代码贴出来请你指正,最好也让我看一下你自己写的,如果你名副其实,应该不难吧。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
 int a;
 int b1=0;
 int b2=0;
 int i=0;
 srand((unsigned)time(NULL));
 for(i=0;i<10000;i++)
 {
 a = rand();
 if((a&6)==6)//see older boy
 {
 b1++;
 if((a&1)==1)b2++;
 }
 else if((a&5)==1)//see younger boy
 {
 b1++;
 if((a&2)==2)b2++;
 }
 }
 printf("%d\t%d\t%f\n", b2,b1,(float)b2/(float)b1);
 return 0;
}
关键词(Tags): #include
家园 所以说辞不达意 -- 有补充

其实我想的是那家人孩子男女分布、大小分布的问题,表述出来是那家人另一个孩子是男是女问题。

懒厨河友表述的是你所想的问题,奔波儿河友表述的是你所说的问题。

作者 对本帖的 补充(1)
家园 所以说辞不达意 -- 补充帖

其实我想的是那家人孩子男女分布、大小分布的问题,表述出来是那家人另一个孩子是男是女问题。

懒厨河友表述的是你所想的问题,奔波儿河友表述的是你所说的问题。

也不对,懒厨河友的问题应该改为:不管等一个硬币是字是花。两个硬脂同为字的机率是多少。因为1/3的推导,完全不考虑开出的那个的结果。考虑了,还上1/3。

家园 你这个问题很简单啊

为什么不是一儿一女和两个儿子的可能各占一半呢?

因为一儿一女有两种组合,长女次男,或者长男次女,可能性比两个儿子大一倍。

家园 但一儿一女的情况必须少算一半

如果大的是儿子,女男的可能就不存在,只有两种可能,如果小的是儿子,男女的可能就不存在,同样只有两种可能,分别讨论就会更清楚,这也许麻烦,但不会有错,在争论了那么多都没结果的情况下,你不应该拒绝。就算我错了,请你拿个正确的模拟方案出来吧,比说服不了人的争论好吧。

见前补充 4617408
家园 的确这种表述更精确,我前面的帖子也有不够严谨之处

或者说语义的歧义之处。我把这个问题说出“遇到”男孩,仍然不够准确,应该说“遇到有”男孩的家庭才对。否则会引入一个“带男”还是“带女”出来见人的先验概率,对答案的影响是在1/3和100%中变动。

如果二者概率50%,答案还真是1/2,如果是个宠女狂魔,“有女必带”,则另一个是男孩的概率为100%,我的理解相当于“有男必带”,于是得到1/3。

不少同学可能是基于这里的原因选择1/2,那也不能说错,比如zero999

同学,【讨论】趣味数学题

家园 不能少算一半

因为你只看到了一个儿子,当时你不知道这个儿子是长男还是次男。

既然不知道,你就必须把两种组合都考虑进去。

家园 都考虑了

都会让一种情况变得不可能,哪一种变得不可能取决于那个儿子是大还是小,但另一个孩子是儿子的概率都一样。

家园 修正之前回复:所以说辞不达意

所以说辞不达意

其实我想的是那家人孩子男女分布、大小分布的问题,表述出来是那家人另一个孩子是男是女问题。

奔波儿河友表述的是你所说的问题。

你所想的问题是:这两个孩子都是男的,且另外一个小的概率。现象无非女大女小,女大男小,男大男小,男大女小,每一个组合的概率1/4。但是对于眼前这个,你的处理就很特别了,在考虑大小的时候,把性别给考虑进去了:女大女小,女小女大,男大女小,男大男小,男小女大,男小男大,一共6个组合。已知一个是男,那么另一个是男的机率当然是2/6=1/3。所以你的问题是:已知那家人有两个孩子,在不知一个是男孩的前提下,且在已知道一个是男孩的前提下,排列两个孩子的大小,不考虑两个孩子大小排列结果的情况下,另一个是男孩的概率是多少。——条件很拧巴,有相互否定,所以得出的计算结果也很拧巴。

后面的3/7,1/2也是如此。并不是统计结果反常式,是统计条件反逻辑。

家园 其实这里是有"扣子"的,不知diamond老兄看出来了否

首先感谢diamond老兄回复.我在老兄的大作里学到不少东西,特致谢忱.

其实我觉得很多人是不自觉的扩大了样本空间,把已经发生的事情放到概率里面考虑来了.比如看到邻居带出一个孩子,就考虑邻居带出这个孩子的概率.这其实是不对的.

在这里,我故意让邻居在最后多说了一句"他是星战迷".前面双眼皮的例子说明,更多的信息是有可能进一步改变样本空间的.这里要不要考虑"星战迷"这个信息?把孩子分成"星战迷"和"非星战迷",进而修正我们的估计?答案是不需要,因为我们不知道"星战迷"和"非星战迷"的概率,而且也不能简单假设1/2,(显然星战迷的概率不可能是1/2),所以我们无法运用这个信息,所以我们可以安全忽略这个信息,就接受这是个客观事实即可.

同样,看到邻居带出来一个孩子,这是一个客观事实,是已经决定的事情,我们完全可以忽略这个信息,就当他是个已经发生的事实,而不考虑带出哪个孩子的概率.有些同学假设家里有两个孩子,父母带出其中某一个孩子的概率就是1/2,这是不对的.万一当地的风俗是女孩不出门,家长只能带男孩子出门而女孩子只能留在家呢?我们不知道,所以应该存而不论.

就像现在这个版本里的星战行头,那我们要不要可考虑我邻居没买星战行头,而是买了彩虹小马,带回家来,而他闺女是彩虹小马的粉丝的情况呢?显然没有这个必要.

家园 你的模拟不够逼真

仔细看了一下你的代码,严格的模拟应该是这样的:

循环10000次

两个随机变量K1, K2 代表两个孩子,其值为0则代表为男孩,1代表为女孩。

再随机从K1,K2挑一个出来,如果其值为0则将K1,K2放入某个数组,(0代表第一次见到的男孩,如果抽到女孩则放弃,不符合条件,不用放入数组)

该数组有三个字段(K1,K2, FirstMeet)FirstMeet字段代表抽中的是是K1还是K2

循环完毕之后,再对数组进行统计,算法如下:

对数组进行循环,

如果FirstMeet==K1,且K2==0 则BoyCount++

如果FirstMeet==K2, 且K1==0, 则BoyCount++

最后计算 BoyCount/数组总量,得出结果

这个才是逼真的模拟

家园 不如写代码还看得清楚点
全看树展主题 · 分页 下页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河