Rozkład Pareto jest rozkładem prawdopodobieństwa, który często pojawia się w przyrodzie. Ma wiele specjalnych właściwości, takich jak nieskończona średnia. W tym wyzwaniu wypiszesz liczbę próbkowaną z tej dystrybucji.
Dystrybucja Pareto jest zdefiniowana jako większa lub równa x
z prawdopodobieństwem 1/x
, dla wszystkich x
większa lub równa 1.
Dlatego liczba próbkowana z tego rozkładu jest większa lub równa 1 z prawdopodobieństwem 1, większa lub równa 2 z prawdopodobieństwem dokładnie 1/2, większa lub równa 3 z prawdopodobieństwem dokładnie 1/3, większa lub równa 11.4 z prawdopodobieństwem dokładnie 1 / 11.4 i tak dalej.
Ponieważ próbujesz tego rozkładu, twój program lub funkcja nie będzie pobierać danych wejściowych i generować losową liczbę z powyższymi prawdopodobieństwami. Jeśli jednak twój program nie pasuje idealnie do powyższych prawdopodobieństw ze względu na wrażenie zmiennoprzecinkowe, to jest OK. Więcej szczegółów znajdziesz u dołu wyzwania.
(Mówiąc dokładniej, nazywa się to rozkładem Pareto z alfa 1 i dolną granicą 1)
Oto 10 przykładów z tej dystrybucji:
1.1540029602790338
52.86156818209856
3.003306506971116
1.4875532217142287
1.3604286212876546
57.5263129600285
1.3139866916055676
20.25125817471419
2.8105749663695208
1.1528212409680156
Zauważ, że 5 z nich jest poniżej 2, a 5 powyżej 2. Ponieważ jest to średni wynik, mógł on być oczywiście wyższy lub niższy.
Twoja odpowiedź musi być poprawna do granic typu zmiennoprzecinkowego, typu liczb rzeczywistych lub czegokolwiek innego, ale musisz być w stanie przedstawić liczby z dokładnością co najmniej 3 cyfr dziesiętnych i reprezentować liczby do 1 000 000 . Jeśli nie masz pewności, czy coś jest w porządku, zapytaj.
To jest kod golfowy.
Szczegóły dotyczące niedokładności:
Dla każdego zakresu
[a, b]
, gdzie1 <= a < b
jest idealne prawdopodobieństwo, że próbka spadnie w tym zakresie1/a - 1/b
. Prawdopodobieństwo, że program produkuje wiele w tym zakresie musi być z0.001
o1/a - 1/b
. JeśliX
jest to wynik twojego programu, jest to wymagane|P(a <= X <= b) - (1/a - 1/b)| < 0.001
.Zauważ, że stosując powyższą regułę
a=1
ib
odpowiednio dużą, twój program musi wypisać liczbę większą lub równą 1 z prawdopodobieństwem co najmniej 0,999. Resztę czasu może to spowodować awarię, wyjścieInfinity
lub cokolwiek innego.
Jestem całkiem pewien, że istniejące formularze 1/1-x
lub 1/x
, gdzie x
jest losowy zmiennoprzecinkowy w [0, 1)
lub (0, 1)
lub [0, 1]
, wszystkie spełniają ten wymóg.