2 回答
TA贡献1828条经验 获得超6个赞
通常,我会使用字典来做这样的事情,但由于你的骰子表示是一个列表(不可散列),你可以将它们转换为 afrozenset或 a tuple。我更喜欢元组,因为它保留了顺序和重复(如果有)。
num_rounds = 100
dice_wins = {tuple(x):0 for x in dices}
for dice1, dice2 in it.combinations(dices, 2):
for _ in range(num_rounds):
dice1_result = dice1[randint(0, 5)]
dice2_result = dice2[randint(0, 5)]
if dice1_result > dice2_result:
dice_wins[tuple(dice1)] += 1
elif dice2_result > dice1_result:
dice_wins[tuple(dice2)] += 1
max_win = max(list(dice_wins.values()))
die_with_max_win = [dice for dice in dices if dice_wins[tuple(dice)] == max_win]
if len(die_with_max_win) == 1:
return die_with_max_win[0] # only dice with that many wins
else:
return -1 # more than one dice with max wins
TA贡献1883条经验 获得超3个赞
如果您谈论的是具有相同点数的骰子,则不存在“最佳”骰子。例如,如果骰子 A 平均赢得骰子 B,骰子 B 赢得骰子 C,那么平均而言,骰子 C 仍然有可能赢得骰子 A。
添加回答
举报