Napisz program lub funkcję, która przy prawdopodobieństwie sukcesu p , liczbie n i liczbie prób m zwraca szansę na co najmniej n sukcesów spośród m prób.
Twoja odpowiedź musi być dokładna do co najmniej 5 cyfr po przecinku.
Przypadki testowe:
0.1, 10, 100 -> 0.54871
0.2, 10, 100 -> 0.99767
0.5, 13, 20 -> 0.13159
0.5, 4, 4 -> 0.06250
0.45, 50, 100 -> 0.18273
0.4, 50, 100 -> 0.02710
1, 1, 2 -> 1.00000
1, 2, 1 -> 0.00000
0, 0, 1 -> 1.00000
0, 0, 0 -> 1.00000
0, 1, 1 -> 0.00000
1, 1, 0 -> 0.00000
Odpowiedzi:
Galaretka ,
1514 bajtówOdczytuje m , n i p (w tej kolejności) jako argumenty wiersza poleceń. Wypróbuj online!
Należy zauważyć, że to podejście wymaga O (2 m ), czas i pamięć, tak więc nie jest całkiem skuteczne wystarcza do testów, w którym M = 100 . Na mojej maszynie przypadek testowy (m, n, p) = (20, 13, 0,5) zajmuje około 100 sekund. Wymaga zbyt dużej pamięci dla tłumacza online.
Jak to działa
źródło
Mathematica, 29 bajtów
Pobiera dane wejściowe w kolejności
n,m,p
. Mathematica jest tak dobra, że nawet dla ciebie gra w golfa:BetaRegularized
jest uregulowaną niepełną funkcją beta .źródło
R,
3231 bajtówedycja - 1 bajt przełącza się na dystrybucję beta (zgodnie z @ Sp3000 Mathematica Answer)
źródło
Python, 57 bajtów
Formuła rekurencyjna dla współczynników dwumianowych, z wyjątkiem przypadku podstawowego,
m==0
wskazuje, czy pozostała liczba wymaganych sukcesówn
jest nieujemna,True/False
dla1/0
. Ze względu na wykładnicze drzewo rekurencji, zatrzymuje się na dużych nakładach.źródło
from functools import lru_cache; f = lru_cache(None)(f)
.Haskell, 73 bajty
źródło
MATLAB,
7871 bajtówZaoszczędź 7 bajtów dzięki Luisowi Mendo!
Funkcja arrayfun nie jest zabawna, ale nie znalazłem sposobu, aby się jej pozbyć ...
źródło
Pyth, 26 bajtów
Wypróbuj online!
Wykorzystuje standardowy skumulowany rozkład dwumianowy.
źródło
Pyth, 20 bajtów
Wypróbuj online!
Uwaga: CG jest bardzo dużą liczbą, której tłumacz nie jest w stanie obsłużyć. Dlatego liczba prób została obniżona do ^ T3, czyli tysiąc. Dlatego link daje niedokładny wynik.
Wykorzystuje podejście czysto probabilistyczne.
źródło
JavaScript (ES7), 82 bajty
Zapisano 1 bajt za pomocą
reduce
! Wyjaśnienie:źródło
Oktawa, 26 bajtów
To anonimowa funkcja. Aby go użyć, przypisz go do zmiennej.
Wypróbuj tutaj .
źródło
MATL , 23 bajty
Wejścia są w porządku
m
,n
,p
.Wypróbuj online!
Ten ma bezpośrednie obliczenie zsumowanie Warunkach
n
sięm
w funkcji prawdopodobieństwa dwumianowego (masa) .źródło
Galaretka ,
1817 bajtówOdczytuje n , m oraz p (w tej kolejności) jako argumenty wiersza poleceń. Wypróbuj online!
źródło
TI-Basic, 17 bajtów
Dokładny do 10 miejsc po przecinku, można go dostosować w dowolnym miejscu od 0-14 miejsc po przecinku z większym kodem.
źródło
Haskell, 54 bajty
Definiuje funkcję
(%)
. Nazwij to jak(%) 0.4 2 3
.źródło
Mathematica, 48 bajtów
Wykorzystuje wzór prawdopodobieństwa rozkładu dwumianowego do obliczenia szansy k sukcesów dla k od n do m . Obsługuje przypadki brzegowe za pomocą sumy symbolicznej, gdzie s jest zmienną symboliczną dla prawdopodobieństwa, które później jest zastępowane rzeczywistą wartością p . (Ponieważ s 0 = 1, ale 0 0 jest nieokreślone.)
źródło