приведу пример кода на
python с использованием библиотеки
numpy
import numpy as np
sample_space = [0,1,2,3,4,5,6]
probabilities = [0.3,0.2,0.05,0.05,0.1,0.15,0.15]
n = 20
result = np.random.choice(sample_space,size=n,p=probabilities)
print(result)
sample_space - лист откуда будет производится выборка
probabilities - лист соответствующих вероятностей (0 с вероятностью 0.3, 1 с вероятностью 0.2, и.т.д) вероятности я взял свои, вы поставите свои главное чтобы вероятности в сумме были 1.
n - количество сгенерированных чисел для примера я взял 20, вы зададите сколько ва нужно.
функция
choice также имеет параметр
replace по умолчанию установленный в
True он регулирует может ли ранее выбранный элемент, быть выбранном снова, в нашем случае могут ли быть повторения при выборке из
sample_space (по умолчанию может).
Насчет нормирования вероятностей, такое возможно только если n=2, или если есть дополнительная информация позволяющая создать систему уравнений. В вашем случае это невозможно например
возьмем нашу дистрибуцию мы имеем 0 с вероятностью 0.3, мы меняем ее 0.2, у нас будет существовать бесконечное количество сценариев как мы можем раскидать 0.1 на остальные 6 элементов. Уникального решения не существует.