大误 · 「你谈过几个男朋友?」

知乎日报 何明科 181℃ 评论

大误 · 「你谈过几个男朋友?」

图片:编辑瞎翻白眼

如果一个女生说,她集齐了十二个星座的前男友,我们应该如何估计她前男友的数量?

知乎用户,(。﹏。*)怎么就开学了……

公式:

数据:

{白羊座, 金牛座, 双子座, 巨蟹座, 狮子座, 处女座, 天秤座, 天蝎座, 射手座, 摩羯座, 水瓶座, 双鱼座}

实现:

N@# HarmonicNumber@# &@12

答案:37.2385

公式:

数据:

n=12

实现:

DiscretePlot[c!StirlingS2[n-1,c-1]/c^n/.c->12,{n,1,100}]

答案:

有 10%的把握少于 17 个,有 50%的把握少于 35 个。
有 90%的把握少于 55 个,有 99%的把握少于 82 个。

公式

数据

额外假设 1:题主是中国人,所以使用中国的星座分布数据

额外假设 2:题主是适龄青年,所以使用年龄 18-36 的星座分布数据

第一个是白羊座,然后是金牛,以此类推……

p={0.1028,0.0911,0.0843,0.0822,0.0848,0.085,0.0857,0.0795,0.0753,0.0761,0.0808,0.073}

注 1:不要吐槽总和不是 1,因为有舍入误差……

实现

NIntegrate[1-Fold[Times,1,1-E^(-#t)&/@p],{t,0,9527}]

答案:37.7424,就比均匀分布多了 0.5 个……

可以类比均值不等式理解为何分布默认均匀的时候最小

比如……哦不……显然

上任是处女(座),估摸着下任怎么着也不会是处女(座)了……

上任是天蝎(座),那么我打包票,你不会也不敢有下任了……

然后顺便把上面的星座分布不均也考虑进去……

所以我们可以用一个转移矩阵来刻画这个情况。

或者画成 12 个节点的加权有向图……

然后求这个加权图 G 的随机游走覆盖时间(Cover Time)

考虑到严谨性我应该证明一下上面的一堆公式,不过上面三个公式每个都能写篇大论文,知乎短短篇幅说不清,所以解释就化归到这个问题一并解决……

随机游走

  • 把 12 星座画成 12 个节点,然后可以作为下任的话就画个箭头
  • 箭头有个粗细程度,这个叫加权,加权决定了选这个下任的概率有多大,实际概率波动不大所以不明显
  • 分析这 144 个关系全都画出来就是上面这张图
  • 选男友的过程数学上被称为图 G 上的随机游走

Cover Time

  • 这些节点全部经过至少一遍所需要的时间叫做Cover Time
  • 子问题包括各种著名概率问题,生日问题啊,赠券收集啊等等……
  • 衍生问题还有复遍历,多重遍历什么的,可以有效用于氪金估计……
  • 退化问题,退化为 Tree 的话可以相当有效的进行爬虫策略优化……

显然上面三个公式都是这个问题的特例

  1. 小学生:12 阶非加权完全图的 Cover Time
  2. 初中生:12 阶非加权完全图指定 Cover 程度后的 Time 分布
  3. 高中生:12 阶加权完全图的 Cover Time

这个问题数学上来说的话不难,穷举所有路径首次通过时间的分布的平均值的交错和就行了……写成公式就是这样:

记 A 为 G 的所有可能通过的路径

虽然能写出公式然而并没有什么用,求解精确值还是个世界难题……

写成代码是这个样子的,复杂度足够让算法学家爆气……

幸好星座只有 12 个我的小 CPU 还能踉跄跑完……56 个民族的话到宇宙灭亡也跑不完

(*M 表示转移矩阵,i 表示起始节点编号 *)

CoverTime[M_,i_]:=Module[{Start,Roads,Ex,Si},
Start=ConstantArray[0,Length[M]];Start[[i]]=1;
Roads=Subsets[DeleteCases[Range@Length[M],i]][[2;;-1]];
Ex=Mean@FirstPassageTimeDistribution[
DiscreteMarkovProcess[Start,M],#]&/@Roads;
Si=If[Length[#]~Mod~2==1,1,-1]&/@Roads;
Total[Ex*Si]];
CoverTime[M,#]&/@Range[12]

而且蒙特卡洛效果也不太,,小规模精度不,,大规模基本跑不完……

一般可以用 Matthews 逼近来稍稍有效的求一下上下界……

见 Markov Chains and Mixing Times 一书

忘记说计算结果,初始节点对最后的结果影响不,所以第一个男友很重要啊

第一任是处女座的话最,只要 31.64 ,其他都在在 35-38 之间……

某些数理邪教组织,,宣传什么  法,,就那个传说中能找到最理想男友的法则……无责任超链接: 关于配偶选择理论的详细解释以及推广

人一生中会遇到大约 40 有可能进行交往的对,然后可以取前  也就是 13 个人为实验,考察下质量然后放弃,然后后面 27 个只要有超过前 13 个中最强的就嫁了吧……

Well……S,Reasons to believe that you are the 13th rebound guy……

简单地说就是找 12 个星座的男生采样比较均匀……

如果你相信真爱的,说不定是这种情况:


编辑瞎注:图片来自网络,侵删

何明科,不写程序的数据工程师不是好产品经理

你们这边技术大咖和数学大咖太欺负人,动不动就写程序做模拟,或者抛个名词和公式而不给解释。让我这个小白之友放出一个小学数学的解法。

要想集齐 12 个星座的前男友,需要经历 13 个状态:

  • (状态 0) 玩过 0 个星座的男友
  • (状态 1) 玩过 1 个星座的男友
  • ……
  • (状态 12) 玩过 12 个星座的男友

状态 0 是初始态,状态 12 是终止态,这 13 个状态是顺序发生而一个不能漏的。

要实现状态升级,就需要玩新的男友,且他们中有人的星座之前没玩过。

  • 从状态 0 到 1,只要玩 1(=12/12) 个就好。因为之前本姑娘还处于含苞待放的状态
  • 从状态 1 到 2,新玩男友数量的期望值为 12/11。因为之前已经玩过一个星座,所以遇到一个新星座男友的概率为(12-1)/12
  • ……
  • 从状态 i 到 i+1,新玩男友的期望值为 12/(12-i)。因为之前已经玩过 i 个星座,所以遇到一个新星座男友的概率为(12-i)/12
  • ……
  • 从状态 11 到 12,完成任务,新玩男友的期望值为 12/1。因为之前已经玩过 11 个星座,所以遇到一个新星座男友的概率为(12-11)/12

把这 12 次状态升级所需的新男友数量的期望值加在一起就等于前男友数量的期望值,12/12+12/11+12/10+...+12/1=37.23

最后再提醒一下各位宅男,准确的说,37.23 是该妹子初次集满 12 星座时候的前男友数目期望值,而不是该妹子前男友的期望值。因为,集满 12 星座之后,妹子是否还收集 12 个生肖以及 12 种「不可描述」,还未得知。千万不要兴奋过早,如同郭德纲的一个相声所说:于谦老婆的前男友够一幅麻将,(于谦说,四个呀?),错,一副麻将牌!!!

转载请注明:微图摘 » 大误 · 「你谈过几个男朋友?」

喜欢 (0)or分享 (0)
发表我的评论