大家好,我看了春晚拿杯子的魔术,想着着肯定有时数学问题,就试着用python实现了一下
打乱勺子、筷子、杯子的顺序
我们可以用以下代码实现:
import random
kuaizi = '筷子'
shaozi = '勺子'
beizi = '杯子'
l = [kuaizi, shaozi, beizi]
random.shuffle(l)
筷子和左边的互换
i = l.index(kuaizi)
if i != 0:
l[i-1], l = l, l[i-1]
杯子和右边的互换
i = l.index(beizi)
if i != 2:
l[i+1], l = l, l[i+1]
勺子和左边的互换
i = l.index(shaozi)
if i != 0:
l[i-1], l = l, l[i-1]
拿起东西
print("左手:",l[0],"右手:",l[2])
输出可知,无论怎么运行,都输出的是右手拿杯子,让我们来验证一下:
import random
kuaizi = '筷子'
shaozi = '勺子'
beizi = '杯子'
j = 0
for _ in range(1000000):
l = [kuaizi, shaozi, beizi]
random.shuffle(l)
# 筷子和左边的互换
i = l.index(kuaizi)
if i != 0:
l[i-1], l = l, l[i-1]
#杯子和右边的互换
i = l.index(beizi)
if i != 2:
l[i+1], l = l, l[i+1]
#勺子和左边的互换
i = l.index(shaozi)
if i != 0:
l[i-1], l = l, l[i-1]
if l[2] == beizi:
j += 1
print(j/1000000)
最后输出1.0,说明右手一定会拿起杯子的,有人能解释一下吗