分蛋糕問題

2021-08-17 18:40:54 字數 2181 閱讀 2842

#分蛋糕問題

有一家有兩個孩子,哥哥和弟弟,兩人都很喜歡吃蛋糕,每次分蛋糕的時候,哥哥都會把一把刀插在蛋糕的一端,然後隨機地切下兩刀,插著刀的這一部分歸哥哥,剩下的歸弟弟,那麼問題來了,這樣的分配方式看似公平,但是到底真正公平嗎?

首先我們採用隨機模擬的方式來分析一下問題,將蛋糕分成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)

for i in range(360):

plt.plot(range(360),pa,'g-',range(360),pb,'r-')

plt.show()

不難看出,顯然每次都是哥哥佔了便宜。

下面我們從概率的方式分析下這個問題,每次分蛋糕時,哥哥分到的蛋糕大於弟弟可以寫成如下不等式:

360−y+

x∣>∣y

−x∣|360-y+x|>|y-x|

∣360−y

+x∣>∣y

−x∣,

那麼可以轉化為幾何概率的問題,在座標軸上作出

y =x

+180

y=x+180

y=x+18

0和y =x

可以看出,哥哥大於弟弟的概率是弟弟大於哥哥的概率的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()

故事的後續:

明面上是精通數學的哥哥佔了便宜,但是多年以後,因為吃了太多的蛋糕,身材略胖的哥哥並沒有找到女朋友,弟弟邪魅一笑:「嘻,真正的贏家其實是我!」

分蛋糕問題

剛才看到2個人輪流分蛋糕,怎麼分最公平。注意是輪流分,並且每個人都想自己的蛋糕分的最多。有人說平分不就可以了,但比如先拿蛋糕的人會給自己切最大塊,這就不公平了,所以才會有此問題產生。2個人分蛋糕的乙個做法是乙個人切蛋糕,另乙個拿蛋糕,因為切的人後拿蛋糕,所以他就把蛋糕對半切成兩塊,先拿的人拿哪一塊都...

二分 分蛋糕問題

題意 n種蛋糕,每個半徑給出,要分給f 1個人,要求每個人分的體積一樣 形狀可以不一樣 而且每人只能分得一種蛋糕 不能多種蛋糕拼在一起 求每人最大可以分到的體積。輸入 3 3 34 3 3 1 24 510 5 1 4 2 3 4 5 6 5 4 2 輸出 25.1327 3.1416 50.265...

小明分蛋糕問題c語言求解

問題描述 小明今天生日,他有n塊蛋糕要分給朋友們吃,這n塊蛋糕 編號為1到n 的重量分別為a1,a2,an。小明想分給每個朋友至少重量為k的蛋糕。小明的朋友們已經排好隊準備領蛋糕,對於每個朋友,小明總是先將自己手中編號最小的蛋糕分給他,當這個朋友所分得蛋糕的重量不到k時,再繼續將剩下的蛋糕中編號 最...