鱼C论坛

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

策略优化问题,想用代码实现,能力不够,只写了一种策略,求优化代码

[复制链接]
发表于 2021-5-7 22:18:00 | 显示全部楼层 |阅读模式

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

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

x
规则:有三扇门,每扇门一开始都是关着的,门后有着随机数量的金币,点击一次后,对应的门会打开,开门时不会获得金币,若继续点击该门则获得对应门后的金币,每隔3轮,未被点击的门会关闭,并且门后的金币数重新随机产生,每个人有100次点击的机会,金币数量最多的人获胜.

门:
1.有开关两种状态,且关闭时不能获取金币,起始状态为关
2.门后的金币数在(1.50)之间随机产生
3.每隔3轮,未被点击的门要进行重置

人:
1.具有金币数量起始为0
2.具有一百次机会

  1. import random as r


  2. class Door:
  3.     def __init__(self, state=False):#初始化门的状态
  4.         self.state = state
  5.         self.gold_coin = r.randint(1, 50)
  6.         self.num = 3

  7.     def count(self):#保证被选中的门不会被刷新
  8.         if not self.state:
  9.             self.state = True
  10.             print(self.gold_coin)
  11.         elif self.state:
  12.             print(self.gold_coin)
  13.             self.num += 1

  14.     def refresh(self):#三轮未被选中的门刷新
  15.         if self.num == 0:
  16.             self.num = 3
  17.             self.gold_coin = r.randint(1, 50)
  18.             self.state = False
  19.         else:
  20.             self.num -= 1


  21. class Human:
  22.     def __init__(self):#初始化人的状态
  23.         self.max = 0
  24.         self.click = 100
  25.         self.goldcoinsum = 0


  26. def strategy(chioce=1):
  27.     a = Door()
  28.     b = Door()
  29.     c = Door()
  30.     h = Human()
  31.     whichdoor = ""
  32.     otherdoors = []
  33.     if chioce == 1:
  34.         a.count()
  35.         b.count()
  36.         c.count()
  37.         a.refresh()
  38.         b.refresh()
  39.         c.refresh()
  40.         h.click -= 3
  41.         h.max = max(a.gold_coin, b.gold_coin, c.gold_coin)#选最大的金币数的门
  42.         if a.gold_coin > b.gold_coin and a.gold_coin > c.gold_coin:#判断哪个门金币数最大
  43.             whichdoor = a
  44.             otherdoors = [b, c]
  45.         elif b.gold_coin < a.gold_coin < c.gold_coin:
  46.             whichdoor = c
  47.             otherdoors = [b, a]
  48.         else:
  49.             whichdoor = b
  50.             otherdoors = [a, c]
  51.         while h.click > 0:#策略的循环
  52.             h.goldcoinsum += h.max
  53.             h.click -= 1
  54.             whichdoor.count()
  55.             whichdoor.refresh()
  56.             otherdoors[0].refresh()
  57.             otherdoors[1].refresh()
  58.         print("您最终的金币总数为%d" % h.goldcoinsum)

  59. strategy()
复制代码


写的有点烂,大佬轻喷
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-23 15:57:08 | 显示全部楼层
大佬没理你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 10:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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