Python中随机函数结果的总结

2024-10-16 20:43:27 发布

您现在位置:Python中文网/ 问答频道 /正文

很抱歉,如果已经询问此问题,我已搜索但未找到任何内容

我对赔率很感兴趣,制作了一个使用列表和随机加权结果来模拟比赛的函数。我想知道我将如何总结x数量的比赛结果

我的代码如下所示:

cars= ["Favorite", "Second", "Third", "Forth", "Fifth", "Sixth", "Seventh", "Eigth"]
def Race():
    for i in range(100):
        Winner = random.choices(Cars, weights=(33, 28.57, 14.285, 10, 8.33, 6.66, 4, 1.9), k=1)
        print(Winner[0])
Race()

在这个例子中,我们有八辆车在100次比赛

这会打印出每场比赛的所有获胜者的列表。我如何才能让它总结出每个结果产生了多少次,而不是得到一个大列表?例如,“最喜欢的赢了x次!”、“第二次赢了x次!”,等等。我尝试使用for语句,但没有成功

编辑-在下面鲁利和阿什利的帮助下,我能够清理我的函数。谢谢你的帮助


Tags: 函数代码内容列表for数量carsfavorite
2条回答

为什么不避免使用循环,而不是直接设置k参数:

Winners = random.choices(Cars, weights=(33, 28.57, 14.285, 10, 8.33, 6.66, 4, 1.9), k=100)
print(Winners.count("yourDesiredCar"))

如果你想要所有的计数,你可以用以下方法

from collections import Counter
print(Counter(Winners))

其输出类似于:

Counter({'Second': 31, 'Favorite': 27, 'Third': 13, 'Fifth': 10, 'Forth': 9, 'Sixth': 7, 'Eigth': 2, 'Seventh': 1})

我会使用一个单独的字典来计算结果,每次赢家都会在值中添加1,例如:

import random
cars= ["Favorite", "Second", "Third", "Forth", "Fifth", "Sixth", "Seventh", "Eigth"]
results = {"Favorite" : 0, "Second": 0, "Third": 0, "Forth": 0, "Fifth": 0, "Sixth": 0, "Seventh": 0, "Eigth": 0}
def Race():
    for i in range(100):
        Winner = random.choices(cars, weights=(33, 28.57, 14.285, 10, 8.33, 6.66, 4, 1.9), k=1)
        results[Winner[0]] += 1
        print(Winner[0])

Race()
print(results)

给我关于输出的信息:

{'Favorite': 28, 'Second': 23, 'Third': 13, 'Forth': 10, 'Fifth': 9, 'Sixth': 15, 'Seventh': 1, 'Eigth': 1}

相关问题 更多 >