python田忌赛马

一,简介

田忌赛马的故事大家都知道我就不展开说了,田忌能用同全面被碾压的马赢了齐威王(公子),我觉得这是十分具有智慧的。但是,如果说这里的条件改为:1,田忌的马比齐威王同等次的马弱一点但是比齐威王下一等次的马强一点。2,无法从对方马的外观看出马的等次。3,用完的马不能再用。问田忌赢了齐威王的概率是多少?

二,实验设计

1,首先,三局两胜制,我们这里把田忌3局里赢的场数算出来。

  我们初始化马用list中值的大小来比较马的能力,可见田忌的马相对于公子的马来说辣鸡不少。

  t = [2, 5, 8]  #田忌的马
  g = [3, 6, 9] #公子的马

   用完的马不能再次上场(马也要休息啊),那么每次比完的马就从list中remove掉,得出:

  

 1 # 田忌公子博弈策略
 2 def tianji_gongzi():  #田忌千场胜利次数
 3     winer_perchang = []    #每场的胜者
 4     t = [2, 5, 8]
 5     g = [3, 6, 9]
 6     N = 2
 7     for i in range(0,3):
 8         para1 = random.randint(0,N)  #这里设置N是因为list变短了,randint随机范围变小了
 9         para2 = random.randint(0,N)
10         N = N -1
11         #print(t[para1],g[para2])
12         if t[para1] > g[para2]:
13             #print("田忌胜")
14             winer_perchang.append(1)
15         else:
16             #print("公子胜")
17             pass
18         t.remove(t[para1])
19         g.remove(g[para2])
20 
21     return len(winer_perchang)

猜你喜欢

转载自www.cnblogs.com/two-peanuts/p/9335332.html