La distribuzione di Pareto è una distribuzione di probabilità che emerge molto in natura. Ha molte proprietà speciali, come una media infinita. In questa sfida, verrà emesso un numero campionato da questa distribuzione.
La distribuzione di Pareto è definita come maggiore o uguale a x
con probabilità 1/x
, per tutti x
maggiori o uguali a 1.
Pertanto, un numero campionato da questa distribuzione è maggiore o uguale a 1 con probabilità 1, maggiore o uguale a 2 con probabilità esattamente 1/2, maggiore o uguale a 3 con probabilità esattamente 1/3, maggiore o uguale a 11.4 con probabilità esattamente 1 / 11.4 e così via.
Poiché campionerai questa distribuzione, il tuo programma o funzione non accetterà alcun input e produrrà un numero casuale, con le probabilità di cui sopra. Tuttavia, se il tuo programma non corrisponde perfettamente alle probabilità di cui sopra a causa dell'impressione in virgola mobile, va bene. Vedi il fondo della sfida per maggiori dettagli.
(Questa è chiamata distribuzione di Pareto con alfa 1 e limite inferiore 1, per l'esattezza)
Ecco 10 esempi tratti da questa distribuzione:
1.1540029602790338
52.86156818209856
3.003306506971116
1.4875532217142287
1.3604286212876546
57.5263129600285
1.3139866916055676
20.25125817471419
2.8105749663695208
1.1528212409680156
Nota come 5 di questi sono inferiori a 2 e 5 superiori a 2. Dato che questo è il risultato medio, ovviamente avrebbe potuto essere più alto o più basso.
La tua risposta deve solo essere corretta fino ai limiti del tipo a virgola mobile, del tipo di numero reale o di qualsiasi altra cosa tu usi, ma devi essere in grado di rappresentare numeri con almeno 3 cifre decimali di precisione e rappresentare numeri fino a 1.000.000 . Se non sei sicuro che qualcosa vada bene, non esitare a chiedere.
Questo è il codice golf.
Dettagli sull'imprecisione:
Per ogni intervallo
[a, b]
, dove1 <= a < b
, la probabilità ideale che il campione rientri in quell'intervallo è1/a - 1/b
. La probabilità che il programma produce un numero in tale intervallo deve essere con0.001
del1/a - 1/b
. SeX
è l'output del tuo programma, è necessario che|P(a <= X <= b) - (1/a - 1/b)| < 0.001
.Nota che applicando la regola sopra con
a=1
eb
sufficientemente grande, è il caso che il tuo programma debba generare un numero maggiore o uguale a 1 con almeno probabilità 0,999. Il resto del tempo potrebbe arrestarsi in modo anomalo, produrreInfinity
o fare qualsiasi altra cosa.
Sono abbastanza certo che gli invii esistenti del modulo 1/1-x
o 1/x
, dove si x
trova un float casuale in [0, 1)
o (0, 1)
o [0, 1]
, soddisfano tutti questo requisito.