一个古老的数学游戏,很早就知道了,但一直编程没编正确。今天终于正确了。
有1、2、3、4、5、6这6种牌,每种牌有3张。开始总点和记为24,然后两个人轮流选一张牌,然后从总点和里减去牌面值,直到总点和非正。谁取完牌后,总点和为0,则胜;若为负,则败。
例如:
24
A:3
21
B:6
15
A:1
14
B:2
12
A:5
7
B:3
4
A:4
A胜
问先取是否有必胜策略,或后取是否有?
下面是一段人和电脑玩的代码
下面是加强的版本,表征胜败不是用1,0简单表达,而是用了-1.0~1.0之间的实数,符号表示胜败,绝对值大小表示胜或败的强度,这样可以让电脑选择败强度低的局面(复杂,人能获胜的支路相对整个博弈树来要小,需要仔细选择),这样人可能容易出错。
另外在选择方案时,加入了一点随机性,以免每次博弈都是同样选择顺序(当,然胜败应该相同)。