В некотором коде я хочу выбрать 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 переменных:

Есть ли у вас идея хорошего алгоритма выбора чисел, которые приводят к более равномерному или простому распределению?