En algún código quiero elegir n
números aleatorios en [0,1)
que suman 1
.Elegir n números con suma fija
lo hago por la elección de los números de forma independiente en [0,1)
y la normalización de ellas dividiendo cada uno por la suma total:
numbers = [random() for i in range(n)]
numbers = [n/sum(numbers) for n in numbers]
Mi "problema" es decir, que la distribución salgo es bastante asimétrica. Elegir un millón de números, ni uno solo, supera el 1/2
. Por algún esfuerzo he calculado el pdf, y no es bueno.
Aquí es el pdf de aspecto extraño que me pasa por 5 variables:
¿Tiene una idea para un buen algoritmo para elegir los números, que se traducen en una mayor distribución uniforme o simple?
No estoy seguro de entender, si se divide el número 1 en un millón de piezas al azar, _debería_ no ser una que supere el 0,5. Si hubiera, eso significaría que los otros 999.999 tendrían que caber en la otra mitad. – DShook
posible duplicado de [Generar múltiples números aleatorios para igualar un valor en python] (http://stackoverflow.com/questions/3589214/generate-multiple-random-numbers-to-equal-a-value-in-python) –