La distribución de Pareto es una distribución de probabilidad que surge mucho en la naturaleza. Tiene muchas propiedades especiales, como una media infinita. En este desafío, generará un número de muestra de esta distribución.
La distribución de Pareto se define como mayor o igual que x
con probabilidad 1/x
, para todos x
mayor o igual que 1.
Por lo tanto, un número muestreado de esta distribución es mayor o igual a 1 con probabilidad 1, mayor o igual a 2 con probabilidad exactamente 1/2, mayor o igual a 3 con probabilidad exactamente 1/3, mayor o igual a 11.4 con probabilidad exactamente 1 / 11.4, y así sucesivamente.
Como tomará una muestra de esta distribución, su programa o función no tomará ninguna entrada y generará un número aleatorio con las probabilidades anteriores. Sin embargo, si su programa no coincide perfectamente con las probabilidades anteriores debido a la impresión de punto flotante, está bien. Vea el fondo del desafío para más detalles.
(Esto se llama Distribución de Pareto con alfa 1 y límite inferior 1, para ser exactos)
Aquí hay 10 ejemplos de esta distribución:
1.1540029602790338
52.86156818209856
3.003306506971116
1.4875532217142287
1.3604286212876546
57.5263129600285
1.3139866916055676
20.25125817471419
2.8105749663695208
1.1528212409680156
Observe cómo 5 de ellos están por debajo de 2 y 5 están por encima de 2. Dado que este es el resultado promedio, podría haber sido mayor o menor, por supuesto.
Su respuesta solo necesita ser correcta hasta los límites de su tipo de coma flotante, tipo de número real o cualquier otra cosa que use, pero debe poder representar números con al menos 3 dígitos decimales de precisión y representar números de hasta 1,000,000 . Si no está seguro de si algo está bien, no dude en preguntar.
Este es el código de golf.
Detalles sobre la imprecisión:
Para cada rango
[a, b]
, donde1 <= a < b
, la probabilidad ideal de que la muestra caiga en ese rango es1/a - 1/b
. La probabilidad de que su programa produzca un número en ese rango debe ser0.001
de1/a - 1/b
. SiX
es la salida de su programa, se requiere que|P(a <= X <= b) - (1/a - 1/b)| < 0.001
.Tenga en cuenta que al aplicar la regla anterior con
a=1
yb
suficientemente grande, es el caso de que su programa debe generar un número mayor o igual a 1 con al menos una probabilidad de 0,999. El resto del tiempo puede bloquearse, producirseInfinity
o hacer cualquier otra cosa.
Estoy bastante seguro de que las presentaciones existentes de la forma 1/1-x
o 1/x
, donde x
es un flotador al azar en [0, 1)
o (0, 1)
, o [0, 1]
, todos satisfacen este requisito.