random.choices будет, конечно, делать то, что вы хотите, но это может быть излишним. Он может генерировать произвольно длинную последовательность, если выбор из конечного множества, где каждый элемент имеет независимую частоту. Существует пример его использование в разделе примеров связанной документации Python:
>>> # Estimate the probability of getting 5 or more heads from 7 spins
>>> # of a biased coin that settles on heads 60% of the time.
>>> trial = lambda: choices('HT', cum_weights=(0.60, 1.00), k=7).count('H') >= 5
>>> sum(trial() for i in range(10000))/10000
0.4169
В этом примере весовых коэффициентов определяются как кумулятивное распределение:
cum_weights=(0.60, 1.00)
Эквивалентного вызов с использованием индивидуальных весов , как в вашем примере, будет
weights=(0.60, 0.40)
Вес не должен составлять до Q; они будут нормализованы.
На каком языке? – rici
Язык Python – Hydroxl