python 盒子_益智盒子问题python的解决方法

益智盒子问题python的解决方法,也可以叫罪犯与盒子的问题。

169a8ee35a1cd57a27c3566e1efd711d.png

import sys

import random

def strategy(boxes, p):

''''' return True if strategy success '''

return False

def simulate(n, strategy, times):

''''' n: number of boxes or prisoners

strategy: strategy used

times: random simulation times

return numbers of succeeded prisoners as list

www.iplaypy.com

'''

boxes = range(n)

result = []

for i in xrange(times):

random.shuffle(boxes)

success = 0

for p in xrange(n):

if strategy(boxes, p):

success += 1

result.append(success)

return result

def standard_strategy(boxes,p):

times_remain = len(boxes)/2

current = p

while times_remain > 0:

times_remain -=1

if boxes[current] ==p:

return True

else:

current = boxes[current]

return False

n = 100

result = simulate(n,standard_strategy,100)

print result

import matplotlib.pyplot as plt

dist = [result.count(i) for i in range(n+2)]

plt.bar(range(n+2),dist)

plt.show()

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/code/game/g2444.html

相关文章 Recommend

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值