携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情
前两天写了一个倍投模拟模型,玩的很上头。在查资料时,看到了圣彼得堡悖论,和倍投模型有异曲同工之妙。你愿意花多少钱参加一个期望值无限大的游戏,也就是说只要你一直玩下去,你可以赚到无限的钱。
什么是圣彼得堡悖论?
1730年代,数学家丹尼尔·伯努利的堂兄尼古拉一世·伯努利,在致法国数学家皮耶·黑蒙·德蒙马特的信件中,提出一个问题:
有一个“掷硬币掷到正面为止”的赌局,第一次掷出正面,就给你1元。第一次掷出反面,那就要再掷一次,若第二次掷的是正面,你便赚2元。若第二次掷出反面,那就要掷第三次,若第三次掷的是正面,你便赚2*2元……如此类推,一直掷到正面为止。你可能掷一次,赌局便结束,也可能反复一直掷,掷个没完没了。问题是,你最多肯付多少钱参加这个赌局?
问题来了:你做多愿意付的钱应该等于这个游戏的期望值:
而这个赌局的期望值是无限大的,也就是说,假如你家底充裕,肯拿出无限的金钱去参加这个游戏。你可能赚到1元,2元,4元,8元等,是不可能赚到无限的金钱的。
如果限定最多可以玩100次(如果100次都是反面,就拿不到钱),根据上面的公式,期望值是50元,但是一般人是不愿意花50元去玩这个游戏的,至于为什么不愿意玩,我们通过代码模拟后再解释。
代码模拟
下面的代码非常简单,
var one = 0;
var two = 0;
var four = 0;
var eight = 0;
var time = 0;
var max = 0;
for(var i=0;i<10000;i++){
var first = 1;
console.log("第"+(i+1)+"次");
for(var j=0;j<1000;j++){
var check = Math.random();
if(check>=0.5){
switch(first){
case 1:
one++;
break;
case 2:
two++;
break;
case 4:
four++;
break;
case 8:
eight++;
break;
}
if(first>10){
time++;
if(first>max){
max = first;
}
}
console.log("赚了"+first);
break;
}else{
first=first*2;
}
}
}
console.log("1元的次数"+one);
console.log("2元的次数"+two);
console.log("4元的次数"+four);
console.log("8元的次数"+eight);
console.log("超过10元的次数"+time);
console.log("最多赚:"+max);
下面是三轮的输出结果:
多次实验的结论差不多,有50%的概率第一次就获得1元,和抛硬币的概率一致。
看到这里估计大家都懂了,虽然说期望是无限的,但是由于不可能一直玩下去,而且概率太低。这就是为啥玩不下去,就像倍投模型,前提是你有无限的金钱才能一直赢下去,否则最终的结局还是输光。
为什么大家觉得不划算?
丹尼尔·伯努利在1738年的论文里,对这个悖论提出了解答,他以效用的概念(效用是指消费者对于投资的相对满意度),来挑战以金额期望值为决策标准,论文主要包括两条原理:
- 边际效用递减原理:一个人对于财富的占有多多益善,即效用函数一阶导数大于零;随着财富的增加,满足程度的增加速度不断下降,效用函数二阶导数小于零。
- 最大效用原理:在风险和不确定条件下,个人的决策行为准则是为了获得最大期望效用值而非最大期望金额值。
图画的有点糙,不过就是这个道理。
效用反映着人的欲望,而欲望是无法具体度量的,只能通过人类满足自己的愿望付出了多少价格来判断。就像玩游戏时,有人愿意花费几百元开箱子,也可能因为一件快递不包邮而拒绝购买,在于人类的主观意念。
买彩票就是如此,即使中奖概率极低,还是有人日复一日的去做贡献。因为花费一个较小的价值去购买一个致富的机会相比来说还是很划算,这是心理学的范畴。
over!
你还有什么新思路吗?有的话咱评论区见,欢迎点赞收藏关注,感谢!