分蛋糕问题

xiaoxiao2021-02-28  23

#分蛋糕问题

有一家有两个孩子,哥哥和弟弟,两人都很喜欢吃蛋糕,每次分蛋糕的时候,哥哥都会把一把刀插在蛋糕的一端,然后随机地切下两刀,插着刀的这一部分归哥哥,剩下的归弟弟,那么问题来了,这样的分配方式看似公平,但是到底真正公平吗?

首先我们采用随机模拟的方式来分析一下问题,将蛋糕分成360度,设定一开始哥哥插刀的位置为0度,之后切蛋糕的角度分别为x,y,不妨设y > x。那么弟弟分到的蛋糕就是y - x的部分,哥哥分到的蛋糕就是360 - y + x的部分,我们使用Python模拟10_000,100_000,1000_1000,1_1000_000次分蛋糕的结果,横轴为0到359度的分到的蛋糕大小,纵轴为分到相应大小蛋糕的概率。结果如下图(绿线为弟弟,红线为哥哥):

具体代码如下:

import matplotlib.pyplot as plt import random N=1000000 valueA=[] valueB=[] PA=[] PB=[] for i in range(N): tmp1=random.random()*360 tmp2=random.random()*360 if tmp1>tmp2 : tmp=round(tmp1-tmp2) else: tmp=round(tmp2-tmp1) valueA.append(tmp) valueB.append(360-tmp) for i in range(360): PA.append(valueA.count(i)/N) PB.append(valueB.count(i)/N) plt.plot(range(360),PA,'g-',range(360),PB,'r-') plt.show()

不难看出,显然每次都是哥哥占了便宜。

下面我们从概率的方式分析下这个问题,每次分蛋糕时,哥哥分到的蛋糕大于弟弟可以写成如下不等式: ∣ 360 − y + x ∣ > ∣ y − x ∣ |360-y+x|>|y-x| 360y+x>yx, 那么可以转化为几何概率的问题,在坐标轴上作出 y = x + 180 y=x+180 y=x+180 y = x − 180 y=x-180 y=x180: 可以看出,哥哥大于弟弟的概率是弟弟大于哥哥的概率的3倍,所以说,学好概率很重要啊,不然以后吃亏了都不知道。

具体代码如下:

import numpy as np import matplotlib.pyplot as plt x=range(180,360) x=np.array(x) x1=range(0,180) x1=np.array(x1) plt.axis([0,360,0,360]) plt.plot(x,x-180,color='red',linestyle='-',label=r'$y=x-180$') plt.plot(x1,x1+180,color='green',linestyle='-',label=r'$y=x+180$') plt.legend(loc='upper left',frameon=False) plt.show()

故事的后续: 明面上是精通数学的哥哥占了便宜,但是多年以后,因为吃了太多的蛋糕,身材略胖的哥哥并没有找到女朋友,弟弟邪魅一笑:“嘻,真正的赢家其实是我!”

转载请注明原文地址: https://www.6miu.com/read-1650108.html

最新回复(0)