在python中生成结果总和

时间:2017-02-04 13:20:45

标签: python random simulation montecarlo coin-flipping

我们有一个游戏,游戏包含500轮。在每一轮中,两个硬币同时被滚动,如果两个硬币都有“头”,那么我们赢得1英镑,如果两个都有“尾巴”,那么我们将损失1英镑,如果我们有一个硬币显示'头'而另一个硬币显示'尾巴'或反之亦然,然后我们只是'再试一次'。

coin_one = [random.randint(0, 1) for x in range(500)]
coin_two = [random.randint(0, 1) for x in range(500)]

game = zip(coin_one, coin_two)

for a, b in game:
    if a and b:
        print(1)
    elif not a and not b:
        print(-1)
else:
    print('please try again') # or continue

结果如下:

1 请再试一次 -1 请再试一次 请再试一次 请再试一次 -1 -1 1 -1 ,............,1

我试图找到结果的总和,这样我就可以知道游戏玩家在游戏完成后赢了或输了多少(500回合)。

在获得仅玩一场比赛(500轮)的结果(赢得/输掉的总金额)之后,我希望玩游戏100次来创建一些总结统计数据,例如玩这个游戏的平均值,最大值,最小值和标准差

2 个答案:

答案 0 :(得分:2)

您可以简单地将值的总和累加到一个新变量中:

total = 0
for a, b in game:
    if a and b:
        total += 1
    elif not a and not b:
        total -= 1
    else:
        print('please try again')

print(total)

如果你不想打印任何东西,如果它们都有不匹配的值,你可以做一个单行:

s = sum(0 if a^b else (-1, 1)[a and b] for a, b in game)

请注意,^是xor运算符,如果两个操作数相同,则返回 falsy 值。把它放在三元组中,我们可以通过使用and两个操作数的短路结果索引来选择-1或1。

答案 1 :(得分:0)

正如其他人所说,total就是您想要搜索的内容。在循环之前定义它,然后它在循环中进入/减少。

total = 0
for a, b in game:
    if a and b:
        total += 1
    elif not a and not b:
        total -= 1