generando números aleatorios con una suma fija
el desafío planteado es generar una serie de números pseudo-random cuya suma equivale un valor predefinido. Específicamente, cómo generar cuatro números que, cuando se suman, igual, 40.
en lugar de confiar en un método que podría sesgar la distribución del primer número, se emplea un enfoque más uniforme. La solución utiliza una estrategia de dividir el valor predefinido en segmentos más pequeños, utilizando divisores seleccionados al azar.
Suponga que tenemos cuatro enteros positivos aleatorios (e, f, g, g, g) tal que 0 f que extiende este concepto, la siguiente función de Python genera una lista aleatoria de enteros positivos que suma a un total especificado:
d = 40 - g
Esta técnica garantiza una probabilidad igual para cada conjunto de números, asegurando una distribución uniforme. Los números aleatorios resultantes cumplen con el requisito de sumar al valor predefinido. import random
def constrained_sum_sample_pos(n, total):
"""Return a randomly chosen list of n positive integers summing to total.
Each such list is equally likely to occur."""
dividers = sorted(random.sample(range(1, total), n - 1))
return [a - b for a, b in zip(dividers [total], [0] dividers)]
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3