题目来自于kaggle。用AI模拟锤子,剪刀,布的游戏。下面是我的一些解法和尝试。
1. 随机数
最直观的解法。用随机数产生。代码如下:
import numpy as np
def random_agent (observation, configuration):
return np.random.randint(1, 10000) % 3
这个解法得到了742.2分。
2. 基于对手会使用平均的策略
这个想法基于对手会比较平均的出锤子,剪刀,布,那样我就永远猜测对手下一次会出已经出过的里面的最少的那个。代码如下:
import numpy as np
counts = {}
def random_agent (observation, configuration):
if observation.step > 0:
counts[observation.lastOpponentAction] = counts.get(observation.lastOpponentAction, 0) + 1
count_of_zero = counts.get(0, 0)
count_of_one = counts.get(1, 0)
count_of_two = counts.get(2, 0)
if count_of_zero == count_of_one and count_of_one == count_of_two:
answer = np.random.randint(1, 10000) % 3
elif count_of_zero <= count_of_one and count_of_z