鱼C论坛

 找回密码
 立即注册
查看: 1549|回复: 1

Python小白从挖坑到脱坑之路029_关于囚徒困境的一道题目

[复制链接]
发表于 2018-7-21 16:37:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 大头目 于 2018-7-21 16:40 编辑

最近到一本书《自私的基因》里面提到一个故事很有意思,是一个变种的囚徒困境(但问题不是囚徒困境),能做成很有趣的程序,我自己能力有限,分享给各位,请大佬帮忙指导。
故事是这样的:
有一个庄家和两个赌徒,赌徒之间不能有任何沟通,当两个赌徒都选择”合作“,则各自从庄家那里拿到3元;当两个赌徒都选择”背叛“,则各自付给庄家1元;当一个赌徒选择”合作“,一个赌徒选择”背叛“,则选择合作的赌徒得0元,选择背叛的赌徒得5元。
有一个科学家召集了一个比赛,希望收集N个程序员的赌博策略,每两个程序都比1次(单场循环PK),最后得到最多钱的程序获胜。

我的问题是:
如下是我编程的2个策略PK的程序,如何最少的优化程序使得程序可以无限扩展策略,并且能够实现单场循环PK赛,使得最后得出获得钱最多的那个程序(每场PK所得的钱累计,算最后总的钱)?

附加题:
每轮循环结果出来后得钱总数最少得策略被剔除,并且复制当赛季第一的策略继续下一轮(可以理解为最差的抄袭最好的,参赛策略总数并不减少),请得出最后能活下来的三个策略。

  1. #囚徒困境游戏
  2. def Plan1():
  3.         yield 1
  4.         for i in range(1000):
  5.                 yield R2

  6. def Plan2():
  7.         for j in range(1000):
  8.                 yield 0

  9. def PK_test(P1,P2):
  10.         global S1
  11.         global S2
  12.         global R1
  13.         global R2
  14.         R1 = P1
  15.         R2 = P2

  16.         if P1 == P2 == 1:
  17.                 S1 = S1 + 3
  18.                 S2 = S2 + 3
  19.         elif P1 == P2 == 0:
  20.                 S1 = S1 - 1
  21.                 S2 = S2 - 1
  22.         elif P1 == 1 and P2 == 0:
  23.                 S1 = S1 + 0
  24.                 S2 = S2 + 5
  25.         elif P1 == 0 and P2 == 1:
  26.                 S1 = S1 + 5
  27.                 S2 = S2 + 0
  28.         else:
  29.                 print('P value Error')
  30.         return S1,S2

  31. if __name__ == '__main__':
  32.         Player1 = Plan1()
  33.         Player2 = Plan2()

  34.         S1 = 0
  35.         S2 = 0
  36.         for x in range(200):
  37.                 print(PK_test(next(Player1),next(Player2)))
复制代码

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-8-8 13:47:49 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-21 17:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表