Взвешенный случайный 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'

Этот алгоритм правильный? Если это так, можно ли это улучшить?

Ответы на вопрос(4)

Ваш ответ на вопрос