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


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

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 Falsen = 100result = simulate(n,standard_strategy,100)print resultimport matplotlib.pyplot as pltdist = [result.count(i) for i in range(n+2)]plt.bar(range(n+2),dist)plt.show()

编橙之家文章,

评论关闭