Obteniendo N números aleatorios cuya suma es M
Quiero obtener N números aleatorios cuya suma sea un valor.
Por ejemplo, supongamos que quiero 5 números aleatorios que sumen 1.
Entonces, una posibilidad válida es:
0.2 0.2 0.2 0.2 0.2
Otra posibilidad es:
0.8 0.1 0.03 0.03 0.04
Etcétera. Necesito esto para la creación de una matriz de pertenencias para Fuzzy C-means.
Respuesta corta:
Simplemente genere N números aleatorios, calcule su suma, divida cada uno por la suma y multiplíquelo por M.
Respuesta más larga:
La solución anterior no produce una distribución uniforme, lo que podría ser un problema según para qué se utilicen estos números aleatorios. Otro método propuesto por Matti Virkkunen:
Genere N-1 números aleatorios entre 0 y 1, agregue los números 0 y 1 a la lista, ordénelos y tome las diferencias de los números adyacentes.
Esto produce una distribución uniforme como se explica aquí .
Genere N-1 números aleatorios entre 0 y 1, agregue los números 0 y 1 a la lista, ordénelos y tome las diferencias de los números adyacentes.