我需要基于加权循环法返回不同的值,以使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'
这个算法正确吗?如果可以,可以改善吗?
您的算法是正确的,还有一些更优雅的方法:
import random my_list = ['A'] * 5 + ['B'] * 5 + ['C'] * 90 random.choice(my_list)