一尘不染

Python加权随机

algorithm

我需要基于加权循环法返回不同的值,以使20分之一的人获得A,20分之一的人获得B,其余的人获得C。

所以:

A => 5%
B => 5%
C => 90%

这是一个看起来可行的基本版本:

import random

x = random.randint(1, 100)

if x <= 5:
    return 'A'
elif x > 5 and x <= 10:
    return 'B'
else:
    return 'C'

这个算法正确吗?如果可以,可以改善吗?


阅读 230

收藏
2020-07-28

共1个答案

一尘不染

您的算法是正确的,还有一些更优雅的方法:

import random
my_list = ['A'] * 5 + ['B'] * 5 + ['C'] * 90
random.choice(my_list)
2020-07-28