Wilson przedział wynik jest przedział ufności z prawdopodobieństwem sukcesu, na podstawie proporcji sukcesów w zbiorze prób Bernoulliego (próba Bernoulliego jest badaniem, w którym możliwe są dokładnie dwa efekty: sukces lub niepowodzenie ). Przedział jest określony następującą formułą:
Dwie wartości podane w formule są górną i dolną granicą przedziału. n S i n F to odpowiednio liczba sukcesów i niepowodzeń, a n to całkowita liczba prób (równoważna n S + n F ). z jest parametrem zależnym od pożądanego poziomu ufności. Do celów tego wyzwania zostanie użyte z = 1,96 (co odpowiada 95% przedziałowi ufności) 1 .
Biorąc pod uwagę nieujemne liczby całkowite n S i n F , wyprowadzaj granice przedziału wyniku Wilsona.
Zasady
- Dane wyjściowe muszą być tak dokładne, jak to możliwe, do prawdziwych wartości, w granicach implementacji zmiennoprzecinkowej Twojego języka, ignorując wszelkie potencjalne problemy wynikające z niedokładności arytmetycznych zmiennoprzecinkowych. Jeśli twój język jest zdolny do arytmetyki o dowolnej precyzji, musi być co najmniej tak precyzyjny jak arytmetyka o podwójnej precyzji IEEE 754.
- Dane wejściowe będą w reprezentatywnym zakresie dla rodzimego typu liczb całkowitych w twoim języku, a dane wyjściowe będą w reprezentatywnym zakresie dla rodzimego typu zmiennoprzecinkowego twojego języka.
- n zawsze będzie dodatni.
- Kolejność wyjść nie ma znaczenia.
Przypadki testowe
Format: n_s, n_f => lower, upper
0, 1 => 0.0, 0.7934567085261071
1, 0 => 0.20654329147389294, 1.0
1, 1 => 0.09452865480086611, 0.905471345199134
1, 10 => 0.016231752262825982, 0.3773646254862038
10, 1 => 0.6226353745137962, 0.9837682477371741
10, 90 => 0.05522854161313612, 0.1743673043676654
90, 10 => 0.8256326956323345, 0.9447714583868639
25, 75 => 0.17545094003724265, 0.3430464637007583
75, 25 => 0.6569535362992417, 0.8245490599627573
50, 50 => 0.40382982859014716, 0.5961701714098528
0, 100 => 0.0, 0.03699480747600191
100, 0 => 0.9630051925239981, 1.0
z
Wartość jest1-α/2
th kwantyl standardowego rozkładu normalnego, gdzieα
jest poziom istotności. Jeśli chcesz mieć 95% przedział ufności, twój poziom istotności toα=0.05
, az
wartość to1.96
.
code-golf
math
number
statistics
Mego
źródło
źródło
Odpowiedzi:
Mathematica, 48 bajtów (kodowanie UTF-8)
Funkcja bez nazwy, która bierze dwa argumenty w kolejności
n_s, n_f
i zwraca uporządkowaną parę liczb rzeczywistych. Trzy bajtowy symbol√
reprezentujący funkcję pierwiastka kwadratowego to U-221A.Wykorzystuje fakt, że poprzedzenie
##
liczbą powoduje iloczyn dwóch argumentów, a+##
ich sumę. Wykorzystuje również fakt, że produkty i sumy automatycznie przewijają listy, dzięki czemu{-1,1}√(...)
implementuje ± w formule. Zdefiniowanie stałejs = z^2
zamiastz
siebie pozwoliło również zaoszczędzić kilka bajtów. (Przeważnie jestem po prostu dumny z oszczędzania bajtu, zauważając, że1.4^4
to jest dokładnie1.96^2
!)źródło
Perl 6 , 66 bajtów
Ta funkcja faktycznie zwraca skrzyżowanie dolnej i górnej granicy; na przykład, jeśli zostanie wywołany z argumentami 100 i 0, zwraca:
Jest to co najmniej nietradycyjny format wyjściowy, ale nie określono żadnego konkretnego formatu, a obie wymagane wartości są obecne.
źródło
05AB1E , 34 bajty
Dane wejściowe mają postać Dane
[n_s, n_f]
wyjściowe mają postać
[upper, lower]
Wypróbuj online!
Wyjaśnienie
źródło
Runiczne Zaklęcia , 105 bajtów
#StillBetterThanJava
Wypróbuj online!
Dane wejściowe mają formę
n_s n_f
wyjściowe mają postać
lower upper
i mają spację końcowąO Boże, to jest bałagan. Oto nieopakowana wersja:
Wszystkie te
y
mają spowolnić drugie IP, abyT
dotarło do punktu ransfer we właściwym czasie (tj. Drugim). Spowoduje to przesunięcie 3 najlepszych pozycji jednego wskaźnika na drugi (konfiguracja tej akcji jest przedstawiona poniżej).'Ä1C,
generujez
, dzieląc znak 196 przez 100 (dup, kwadrat, dup, div 2, dup, div 2 ...). Cała reszta to tylko matematyka i manipulacja stosami, aby przesunąć przyszłe wartości w dół stosu, dopóki nie będą potrzebne. W większości kończą się we właściwej kolejności i tylko do momentur4s{++}
, gdy musimy odwrócić stos i obrócić całość, aby uzyskać wartości, które chcemy obok siebie.Prawdopodobnie jest miejsce na ulepszenia, ale jest wystarczająco złożone, że go nie widzę. Cholery, że odczytać przypadkowo wartość „z”, a nie „N” w oryginalnym wzorze w jednym punkcie i ustalenie , że było trudne.
Musiałem wyciągnąć kartki i symulować stosy, aby upewnić się, że są poprawne:
Każdy z nich ma wartość na obu końcach ze względu na liczbę zmiennych (np. Miałbym jedną z S i jedną z F, wstawiłbym je oba, odwrócił jeden i dodał S + F, który był włączony drugi koniec do góry stosu). Możesz zobaczyć, że jedna z
sqrt(...)
kart maS
na dolnej krawędzi.źródło
R ,
5853514941 bajtów-15 bajtów dzięki J.Doe. -2 bajty dzięki Giuseppe.
źródło
MATL ,
3837 bajtówWejście jest tablicą dwóch liczb, w każdym z tych formatów:
[25 75]
,[25, 75]
,[25; 75]
.Wypróbuj online! lub zweryfikuj wszystkie przypadki testowe .
źródło
Haskell ,
70 69 6867 bajtówWypróbuj online!
źródło
APL (Dyalog Unicode) , 50 bajtów
Wypróbuj online!
Infix Dfn, biorąc⍺ ← ns i ⍵ ← nfa .
Dzięki H.PWiz i dzaima za pomoc.
W jaki sposób:
źródło
z←1.9208⋄(z+⊣(-,+).5*⍨z×z+2×⊣×⊢÷+)÷z+z++
z
przy jego najbardziej prawym użyciu:...÷z+(z←1.908)++
dla tej samej liczby bajtów. Również:⊣×⊢÷+
->×÷+
Python,
7967 bajtówDane wyjściowe to złożona liczba całkowita z interwałem zapisanym jako część rzeczywista / urojona.
źródło
dc , 71 bajtów
Bierze oba wejścia w dwóch oddzielnych wierszach po wywołaniu i wysyła w dwóch oddzielnych wierszach z górną granicą na dole i dolną granicą na górze .
Na przykład:
źródło
Rakieta 134 bajtów
Nie golfowany:
Testowanie:
Wynik:
źródło
Java 7, 130 bajtów
Gra w golfa:
Nie golfowany:
Wypróbuj online
Zwraca tablicę typu double o długości 2, prawdopodobnie może być bardziej golfa.
źródło
> <> z
-v
flagą, 100 bajtówOczekuje, że dane wejściowe będą obecne na stosie podczas uruchamiania, w kolejności
n_s, n_f
. Wypróbuj online!Co za głupi język, aby spróbować tego w ...
Ponieważ> <> nie ma wykładnika ani operatora pierwiastka, pierwiastek kwadratowy jest obliczany w drugim wierszu kodu przy użyciu metody babilońskiej , z dokładnością do
1e-8
- dla każdego przykładu, który próbowałem, jest on dokładny z dokładnością do co najmniej 10 miejsc po przecinku. Jeśli nie jest to wystarczająco precyzyjne, granice można zaostrzyć, dodając więcej:*
w drugiej linii, przesuwając rzeczy, aby utrzymać lustra w linii.Dane wyjściowe mają następującą postać:
źródło
Pyth, 38 bajtów
Wejście jest w postaci listy wartości
[n_s, n_f]
. Wyjście jest[upper, lower]
Spróbuj go online tutaj , lub sprawdzić wszystkie przypadki testowe od razu tutaj .źródło
Galaretka , 30 bajtów
Wypróbuj online!
Wyjaśnienie
Uwaga
Niektóre z tych funkcji są nowsze niż wyzwanie. Wierzę, że w czasie, gdy to wyzwanie zostało opublikowane,
++®¶×÷++1.96²©HH¤×®½×-,1+®H¤+³÷ç
była ważna Jelly (32 bajty), brakowałoɗ
iØ-
.źródło
APL (NARS), 49 znaków, 98 bajtów
test
źródło