0

我想更改此代码以比较(策略)中看到的每一个组合,而不必编写相同的代码 56 次。目前,该程序仅比较 (0,0,0) 和 (1,1,1) 但我希望他将所有策略相互比较(但不与自身比较)。我不知道我是否应该使用矩阵或类似的东西。我很感激帮助。

import random

estrategia=[[0,0,0],[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,1,0],[1,1,1]]

CCC=0
XXX=0

for jugades in range (10000) :
    llista = [random.randint (0, 1) for x in range (100)]
    for i in range(len(llista)):
        if i+2 >= len(llista):
            break
        if llista[i] == 0 and llista[i+1] == 0 and llista[i-1] == 0:
            CCC+=1
            break
        if llista[i] == 1 and llista[i+1] == 1 and llista[i-1] == 1:
            XXX+=1
            break

print (f'CCC equals {CCC}.')
print (f'XXX equals {XXX}.')
4

1 回答 1

0

首先,您有 28 种组合,而不是 56 种:(A,B)与(B,A)的组合相同。你的意思是排列吗?

for strategy_a, strategy_b in itertools.combinations(estrategia, 2):

有关详细信息,请参阅文档

例子:

import itertools
                 
for a, b in itertools.combinations([1, 2, 3, 4], 2):
    print(a, b)

输出:

1 2
1 3
1 4
2 3
2 4
3 4
于 2021-02-07T17:34:55.827 回答