Взвешенный случайный Python [дубликат]
На этот вопрос уже есть ответ здесь:
Взвешенная версия random.choice 20 ответовМне нужно возвращать разные значения на основе взвешенного циклического перебора, так что 1 из 20 получает A, 1 из 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'
Этот алгоритм правильный? Если это так, можно ли это улучшить?