Die Pareto-Verteilung ist eine Wahrscheinlichkeitsverteilung, die in der Natur häufig vorkommt. Es hat viele spezielle Eigenschaften, wie zum Beispiel einen unendlichen Mittelwert. In dieser Challenge geben Sie eine von dieser Distribution abgetastete Zahl aus.
Die Pareto-Verteilung ist so definiert, dass sie x
mit einer Wahrscheinlichkeit größer oder gleich ist 1/x
, für alle x
größer oder gleich 1.
Daher ist eine aus dieser Verteilung abgetastete Zahl größer als oder gleich 1 mit einer Wahrscheinlichkeit von 1, größer als oder gleich 2 mit einer Wahrscheinlichkeit von genau 1/2, größer als oder gleich 3 mit einer Wahrscheinlichkeit von genau 1/3, größer als oder gleich 11,4 mit einer Wahrscheinlichkeit von genau 1 / 11,4 und so weiter.
Da Sie diese Distribution als Beispiel verwenden, nimmt Ihr Programm oder Ihre Funktion keine Eingabe vor und gibt eine Zufallszahl mit den oben genannten Wahrscheinlichkeiten aus. Wenn Ihr Programm jedoch aufgrund der Gleitkomma-Impression die oben genannten Wahrscheinlichkeiten nicht perfekt erfüllt, ist dies in Ordnung. Weitere Informationen finden Sie am Ende der Herausforderung.
(Dies wird als Pareto-Verteilung mit Alpha 1 und Untergrenze 1 bezeichnet, um genau zu sein.)
Hier sind 10 Beispiele aus dieser Distribution:
1.1540029602790338
52.86156818209856
3.003306506971116
1.4875532217142287
1.3604286212876546
57.5263129600285
1.3139866916055676
20.25125817471419
2.8105749663695208
1.1528212409680156
Beachten Sie, dass 5 unter 2 und 5 über 2 liegen. Da dies das durchschnittliche Ergebnis ist, könnte es natürlich höher oder niedriger sein.
Ihre Antwort muss nur bis zu den Grenzen Ihres Gleitkommatyps, reellen Zahlentyps oder was auch immer Sie sonst verwenden, korrekt sein, aber Sie müssen in der Lage sein, Zahlen mit einer Genauigkeit von mindestens 3 Dezimalstellen und Zahlen bis zu 1.000.000 darzustellen . Wenn Sie sich nicht sicher sind, ob etwas in Ordnung ist, fragen Sie einfach.
Das ist Code Golf.
Details zur Ungenauigkeit:
Für jeden Bereich
[a, b]
ist1 <= a < b
die ideale Wahrscheinlichkeit, dass die Stichprobe in diesen Bereich fällt1/a - 1/b
,. Die Wahrscheinlichkeit, dass Ihr Programm eine Zahl in diesem Bereich erzeugt, muss bei0.001
von liegen1/a - 1/b
. WennX
die Ausgabe Ihres Programms ist, ist es erforderlich, dass|P(a <= X <= b) - (1/a - 1/b)| < 0.001
.Beachten Sie, dass Ihr Programm bei Anwendung der obigen Regel mit
a=1
undb
ausreichend groß eine Zahl größer oder gleich 1 mit einer Wahrscheinlichkeit von mindestens 0,999 ausgeben muss. In der restlichen Zeit kann es zu Abstürzen, AusgabenInfinity
oder anderen Aktionen kommen.
Ich bin mir ziemlich sicher, dass die vorhandenen Einreichungen des Formulars 1/1-x
oder 1/x
, wo x
ein Zufall in [0, 1)
oder (0, 1)
oder schwebt [0, 1]
, alle diese Anforderung erfüllen.