В некотором коде я хочу выбрать n
случайные числа в [0,1)
, которые суммируются с 1
.
Я делаю это, выбирая числа независимо в [0,1)
и нормализуя их, деля их на общую сумму:
numbers = [random() for i in range(n)]
numbers = [n/sum(numbers) for n in numbers]
Моя "проблема" заключается в том, что распределение, которое я получаю, довольно искажено. Выбрав миллион номеров, ни один из них не перейдет 1/2
. Некоторое усилие я вычислил pdf, и это не приятно.
Вот странный вид pdf, который я получаю для 5 переменных:
Есть ли у вас идея хорошего алгоритма выбора чисел, которые приводят к более равномерному или простому распределению?