Das Wilson-Bewertungsintervall ist ein Konfidenzintervall der Erfolgswahrscheinlichkeit, basierend auf dem Anteil der Erfolge in einer Reihe von Bernoulli-Studien (eine Bernoulli-Studie ist eine Studie, in der genau zwei Ergebnisse möglich sind: Erfolg oder Misserfolg ). Das Intervall ergibt sich aus der folgenden Formel:
Die beiden in der Formel angegebenen Werte sind die obere und untere Grenze des Intervalls. n S und n F sind die Anzahl der Erfolge bzw. Misserfolge, und n ist die Gesamtzahl der Versuche (äquivalent zu n S + n F ). z ist ein Parameter, der vom gewünschten Konfidenzniveau abhängt. Für die Zwecke dieser Herausforderung wird z = 1,96 verwendet (entsprechend einem 95% -Konfidenzintervall) 1 .
Bei nicht negativen ganzen Zahlen n S und n F werden die Grenzen des Wilson-Bewertungsintervalls ausgegeben.
Regeln
- Die Ausgaben müssen innerhalb der Grenzen der Gleitkommaimplementierung Ihrer Sprache so genau wie möglich sein und mögliche Probleme aufgrund von arithmetischen Gleitkommaungenauigkeiten ignorieren. Wenn Ihre Sprache eine Arithmetik mit willkürlicher Genauigkeit unterstützt, muss sie mindestens so genau sein wie die IEEE 754-Arithmetik mit doppelter Genauigkeit.
- Die Eingaben liegen innerhalb des darstellbaren Bereichs für den systemeigenen Ganzzahltyp Ihrer Sprache und die Ausgaben liegen innerhalb des darstellbaren Bereichs für den systemeigenen Gleitkommatyp Ihrer Sprache.
- n wird immer positiv sein.
- Die Reihenfolge der Ausgänge spielt keine Rolle.
Testfälle
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
- Der
z
Wert ist das1-α/2
dritte Quantil der Standardnormalverteilung, wobeiα
es sich um das Signifikanzniveau handelt. Wenn Sie ein Konfidenzintervall von 95% wünschen, ist Ihr Signifikanzniveauα=0.05
und derz
Wert ist1.96
.
quelle
Antworten:
Mathematica, 48 Bytes (UTF-8-Codierung)
Unbenannte Funktion, die zwei Argumente in der Reihenfolge verwendet
n_s, n_f
und ein geordnetes Paar reeller Zahlen zurückgibt. Das Drei-Byte-Symbol√
, das die Quadratwurzelfunktion darstellt, ist U-221A.Verwendet die Tatsache, dass das Voranstellen
##
einer Zahl das Produkt der beiden Argumente+##
ergibt , während sich deren Summe ergibt. Nutzt auch die Tatsache, dass Produkte und Summen automatisch über Listen laufen, so dass{-1,1}√(...)
das ± in die Formel implementiert wird. Das Definieren der Konstantes = z^2
anstelle von sichz
selbst sparte auch ein paar Bytes. (Meistens bin ich nur stolz darauf, ein Byte zu speichern, indem ich merke, dass1.4^4
das genau ist1.96^2
!)quelle
Perl 6 , 66 Bytes
Diese Funktion gibt tatsächlich eine Oder-Verknüpfung der unteren und oberen Schranken zurück. Wenn es beispielsweise mit den Argumenten 100 und 0 aufgerufen wird, gibt es Folgendes zurück:
Es ist, gelinde gesagt, ein nicht traditionelles Ausgabeformat, aber es wurde kein bestimmtes Format angegeben, und beide erforderlichen Werte sind vorhanden.
quelle
05AB1E , 34 Bytes
Die Eingabe hat die Form Die
[n_s, n_f]
Ausgabe hat die Form
[upper, lower]
Probieren Sie es online!
Erläuterung
quelle
Runenverzauberungen , 105 Bytes
#StillBetterThanJava
Probieren Sie es online!
Die Eingabe erfolgt in der Form Die
n_s n_f
Ausgabe erfolgt in der Form
lower upper
und hat ein Leerzeichen am EndeAH GOTT, das ist ein Durcheinander. Hier ist die entpackte Version:
Alle diese
y
s sollen die zweite IP verlangsamen, damit sieT
zum richtigen Zeitpunkt (dh zur zweiten) am Übergabepunkt ankommt . Dadurch werden die drei obersten Elemente des einen Zeigers auf den anderen verschoben (das Setup für diese Aktion ist unten dargestellt).'Ä1C,
erzeugtz
durch Teilen des Zeichens 196 durch 100 (dup, square, dup, div 2, dup, div 2 ...). Alles andere ist nur ein Haufen mathematischer und Stapelmanipulationen, um zukünftige Werte in den Stapel zu verschieben, bis sie benötigt werden. Meistens enden sie in der richtigen Reihenfolge und es ist nur so lange, bisr4s{++}
wir den Stapel umkehren und das Ganze drehen müssen, um die gewünschten Werte nebeneinander zu erhalten.Es gibt wahrscheinlich Raum für Verbesserungen, aber es ist komplex genug, dass ich es nicht sehen kann. Heck, hatte gelesen versehentlich „z“ an Stelle von „n“ in der ursprünglichen Formel an einem Punkt und Fixierung , die rauh war.
Ich musste Notizkarten herausziehen und die Stapel simulieren, um sicherzustellen, dass es richtig war:
Jeder einzelne hat an beiden Enden einen Wert aufgrund der Anzahl der vorhandenen Variablen (z. B. ich hätte einen mit S und einen mit F, ich würde beide platzieren, einen umdrehen und das aktivierte S + F hinzufügen das andere Ende oben auf dem Stapel). Sie können sehen, dass eine der
sqrt(...)
Karten eineS
am unteren Rand hat.quelle
R ,
5853514941 Bytes-15 Bytes dank J.Doe. -2 Bytes dank Giuseppe.
quelle
MATL ,
3837 BytesEingang ist eine Anordnung von zwei Zahlen, in jedem dieser Formate:
[25 75]
,[25, 75]
,[25; 75]
.Probieren Sie es online! oder überprüfen Sie alle Testfälle .
quelle
Haskell ,
70 69 6867 BytesProbieren Sie es online!
quelle
APL (Dyalog Unicode) , 50 Byte
Probieren Sie es online!
Vielen Dank an H.PWiz und dzaima für ihre Hilfe.
Wie:
quelle
z←1.9208⋄(z+⊣(-,+).5*⍨z×z+2×⊣×⊢÷+)÷z+z++
z
rechts initialisieren :...÷z+(z←1.908)++
bei gleicher Bytezahl. Auch:⊣×⊢÷+
->×÷+
Python,
7967 BytesDie Ausgabe ist eine komplexe Ganzzahl mit dem als Real- / Imaginärteil gespeicherten Intervall.
quelle
dc , 71 Bytes
Übernimmt beim Aufruf beide Eingaben in zwei separaten Zeilen und gibt sie in zwei separaten Zeilen aus, wobei die obere Grenze unten und die untere Grenze oben liegt .
Beispielsweise:
quelle
Schläger 134 Bytes
Ungolfed:
Testen:
Ausgabe:
quelle
Java 7, 130 Bytes
Golf gespielt:
Ungolfed:
Probieren Sie es online aus
Gibt ein Array vom Typ double mit der Länge 2 zurück, das wahrscheinlich mehr golfen werden kann.
quelle
> <> mit
-v
Flag, 100 BytesErwartet, dass die Eingabe beim Start der Ausführung in der angegebenen Reihenfolge auf dem Stapel vorhanden ist
n_s, n_f
.Probieren Sie es online!Was für eine dumme Sprache, um dies in ...
Da es bei> <> keinen Exponenten oder Wurzeloperator gibt, wird die Quadratwurzel in der zweiten Codezeile nach der babylonischen Methode mit einer Genauigkeit von
1e-8
mindestens 10 Dezimalstellen berechnet . Wenn dies nicht genau genug ist, können die Grenzen durch Hinzufügen von mehr verschärft werden:*
in der zweiten Zeile , um die Spiegel in einer Linie zu halten.Die Ausgabe erfolgt in der folgenden Form:
quelle
Pyth, 38 Bytes
Die Eingabe erfolgt als Liste von Werten
[n_s, n_f]
. Die Ausgabe ist[upper, lower]
Online ausprobieren hier , oder überprüfen alle Testfälle auf einmal hier .quelle
Gelee , 30 Bytes
Probieren Sie es online!
Erläuterung
Hinweis
Einige dieser Funktionen sind neuer als die Herausforderung. Ich glaube, um die Zeit, als diese Herausforderung veröffentlicht wurde,
++®¶×÷++1.96²©HH¤×®½×-,1+®H¤+³÷ç
war gültiges Gelee (32 Bytes), fehlteɗ
undØ-
.quelle
APL (NARS), 49 Zeichen, 98 Byte
Prüfung
quelle