【编程向】学习一点算法和数学
有这么一道题:
A 从 1-100 之间选一个数字,B 猜数字,A 告诉 B 大了还是小了。
如果 B 一次就猜中,A 给 B 50 块钱;第两次猜中,给 B 40 块钱;第三次猜中给 B 30 块钱,以此类推,20 块,10 块,0 块,第七次猜中 B 给 A 10 块,第八次猜中 B 给 A 20块,类推下去。
请问:你会和我玩这个游戏吗?
先说答案:先确定玩几局,5 局以内,心情好就玩,心情不好就不玩。5 局以上,玩!!
答案解析:这道题的 B 期望值是 2.0 元。每玩一局的期望是赚到 2 块钱,5 局大概小赚那么几块钱。
过程解析
知识架构
- 概率学
- 积分
- 算法-二分法
- 归纳学
概率学
1-100 随机挑一个数,
猜一次就猜中的概率是:1%。
猜第二次猜中的概率是:2%。
第一次猜 x ,第二次猜 y
第一次猜后各种情况概率:
- 猜中 1%
- 大了 (100-x)/100,猜中概率 1/(100-x)
- 小了 (x-1)/100,猜中概率 1/(x-1)
总的猜中率: P = 1% + ((100-x)/100 1/(100-x)) + ((x-1)/100 1/(x-1)) = 3%
如果 x 是边界值,那么需要去掉一个加项,猜中率变为 2%。
猜第三次猜中的概率是 4%,总的猜中率是 7%。
概率计算可参考猜两次的过程,计算方式类似。
猜第四次猜中的概率是 8%,总的猜中率是 15%。
猜第五次猜中的概率是 16%,总的猜中率是 31%。
猜第六次猜中的概率是 32%,总的猜中率是 63%。
猜第七次猜中的概率是 37%(100%-1%-2%-4%-8%-16%-32%),总的猜中率是 100%。
收益期望值是:
50x1% + 40x2% + 30x4% + 20x8% + 10x16% + 0 + -10x37% = 2.0
这里差点把我自己给绕进去……
按照科学的办法是这样的,科学期望值是 2 块钱。
反思
这,出的题怎么还赔钱了呢?
问题出在哪儿呢?
哦哦哦,我们把猜第六次猜中的赔率去掉,把第六次猜中改为“给我10元”,第七次猜中改为“给我20元”。
这样一个改动,嗯,收益的期望值立马变成了 -4.9 元。
嗯,完美,玩这个游戏的时候无论当 A 还是 B 都有了解决方案。
实际上,这个游戏玩起来,一点没有意思。
选数的时候 A 可以无限作弊,无论 B 说啥数字,都说没猜中。
实际是 A 没有固定这个选的数字,无论 B 说啥数字,给归到大范围区间去,永远的拖到第 7 次猜中。
B 也可以放水,他可以从 1 开始,然后逐一的加 1 报数,极限的情况是第 100 次才猜中。A 当然也可以反制,无论 B 说啥数字都直接告诉他猜中了。
版权声明:
作者:xinyu2ru
链接:https://www.rxx0.com/software/bian-cheng-xiang-xue-xi-yi-dian-suan-fa-he-shu-xue.html
来源:RUBLOG-分享我的生活
文章版权归作者所有,未经允许请勿转载。
严重浪漫
感谢科普。