L' intervalle de score de Wilson est un intervalle de confiance de la probabilité de succès, basé sur la proportion de succès dans un ensemble d'essais de Bernoulli (un essai de Bernoulli est un essai dans lequel exactement deux résultats sont possibles: succès ou échec ). L'intervalle est donné par la formule suivante:
Les deux valeurs données par la formule sont les limites supérieure et inférieure de l'intervalle. n S et n F sont le nombre de succès et d'échecs, respectivement, et n est le nombre total d'essais (équivalent à n S + n F ). z est un paramètre dépendant du niveau de confiance souhaité. Aux fins de ce défi, z = 1,96 sera utilisé (correspondant à un intervalle de confiance à 95%) 1 .
Étant donné les entiers non négatifs n S et n F , affichez les limites de l'intervalle de score de Wilson.
Règles
- Les sorties doivent être aussi précises que possible par rapport aux vraies valeurs, dans les limites de l'implémentation en virgule flottante de votre langue, en ignorant les problèmes potentiels dus aux inexactitudes arithmétiques en virgule flottante. Si votre langage est capable d'arithmétique à précision arbitraire, il doit être au moins aussi précis que l'arithmétique à double précision IEEE 754.
- Les entrées seront dans la plage représentable pour le type entier natif de votre langue, et les sorties seront dans la plage représentable pour le type natif à virgule flottante de votre langue.
- n sera toujours positif.
- L'ordre des sorties n'a pas d'importance.
Cas de test
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
- La
z
valeur est le1-α/2
e quantile de la distribution normale standard, oùα
est le niveau de signification. Si vous voulez un intervalle de confiance à 95%, votre niveau de signification estα=0.05
et laz
valeur est1.96
.
Réponses:
Mathematica, 48 octets (encodage UTF-8)
Fonction sans nom prenant deux arguments dans l'ordre
n_s, n_f
et renvoyant une paire ordonnée de nombres réels. Le symbole à trois octets√
, représentant la fonction racine carrée, est U-221A.Utilise le fait que précéder
##
d'un nombre donne le produit des deux arguments, tandis que+##
leur somme. Utilise également le fait que les produits et les sommes passent automatiquement sur les listes, ce qui{-1,1}√(...)
implémente le ± dans la formule. La définition de la constantes = z^2
au lieu dez
lui - même a également permis d'économiser quelques octets. (Surtout, je suis juste fier d'économiser un octet en remarquant que1.4^4
c'est exactement1.96^2
!)la source
Perl 6 , 66 octets
Cette fonction renvoie en fait une jonction or des bornes inférieure et supérieure; par exemple, s'il est appelé avec les arguments 100 et 0, il renvoie:
C'est un format de sortie non traditionnel pour le moins, mais aucun format particulier n'a été spécifié, et les deux valeurs requises sont présentes.
la source
05AB1E , 34 octets
L'entrée est de la forme La
[n_s, n_f]
sortie est de la forme
[upper, lower]
Essayez-le en ligne!
Explication
la source
Enchantements runiques , 105 octets
#StillBetterThanJava
Essayez-le en ligne!
L'entrée est de la forme La
n_s n_f
sortie est de la forme
lower upper
et a un espace de finAH DIEU celui-ci est un gâchis. Voici la version non emballée:
Tous ces
y
s doivent ralentir la deuxième IP afin qu'elle arrive auT
point de transfert au bon moment (c'est-à-dire la seconde). Cela pousse les 3 premiers éléments d'un pointeur sur l'autre (la configuration de cette action est illustrée ci-dessous).'Ä1C,
génèrez
en divisant le caractère 196 par 100 (dup, carré, dup, div 2, dup, div 2 ...). Tout le reste n'est qu'un tas de mathématiques et de manipulation de pile pour pousser les valeurs futures dans la pile jusqu'à ce qu'elles soient nécessaires. Pour la plupart, ils se retrouvent dans le bon ordre et c'est seulement jusqu'à cer4s{++}
que nous devions inverser la pile et faire pivoter le tout pour obtenir les valeurs que nous voulons côte à côte.Il y a probablement matière à amélioration, mais c'est suffisamment complexe pour que je ne puisse pas le voir. Heck, avait par inadvertance lu "z" au lieu de "n" dans la formule originale à un moment donné et la fixation qui était rude.
J'ai dû retirer des fiches et simuler les piles afin de m'assurer que c'était correct:
Chacun a une valeur aux deux extrémités en raison du nombre de variables (par exemple, j'en aurais une avec S et une avec F, je les afficherais toutes les deux, en inverser une et ajouter le S + F qui était sur l'autre extrémité en haut de la pile). Vous pouvez voir que l'une des
sqrt(...)
cartes a unS
sur le bord inférieur.la source
R ,
5853514941 octets-15 octets grâce à J.Doe. -2 octets grâce à Giuseppe.
la source
MATL ,
3837 octetsL' entrée est un tableau de deux nombres, dans l' un de ces formats:
[25 75]
,[25, 75]
,[25; 75]
.Essayez-le en ligne! ou vérifiez tous les cas de test .
la source
Haskell ,
70 69 6867 octetsEssayez-le en ligne!
la source
APL (Dyalog Unicode) , 50 octets
Essayez-le en ligne!
Merci à H.PWiz et dzaima pour leur aide.
Comment:
la source
z←1.9208⋄(z+⊣(-,+).5*⍨z×z+2×⊣×⊢÷+)÷z+z++
z
à son utilisation la plus à droite:...÷z+(z←1.908)++
pour le même nombre d'octets. Aussi:⊣×⊢÷+
->×÷+
Python,
7967 octetsLa sortie est un entier complexe avec l'intervalle stocké en tant que partie réelle / imaginaire.
la source
dc , 71 octets
Prend les deux entrées sur deux lignes distinctes lors de l'invocation et les sorties sur deux lignes distinctes avec la limite supérieure en bas et la limite inférieure en haut .
Par exemple:
la source
Raquette 134 octets
Non golfé:
Essai:
Production:
la source
Java 7, 130 octets
Golfé:
Non golfé:
Essayez-le en ligne
Retourne un tableau de type double de longueur 2, peut probablement être joué plus.
la source
> <> avec
-v
indicateur, 100 octetsAttend que l'entrée soit présente sur la pile au début de l'exécution, dans l'ordre
n_s, n_f
. Essayez-le en ligne!Quelle langue stupide pour tenter cela dans ...
Comme> <> n'a pas d'exposant ou d'opérateur racine, la racine carrée est calculée dans la deuxième ligne de code en utilisant la méthode babylonienne , avec une précision de
1e-8
- pour chaque exemple que j'ai essayé, elle est précise à au moins 10 décimales. Si ce n'est pas assez précis, les limites peuvent être resserrées en ajoutant plus:*
dans la deuxième ligne, en mélangeant les choses pour garder les miroirs en ligne.La sortie se présente sous la forme suivante:
la source
Pyth, 38 octets
L' entrée est sous forme de liste de valeurs
[n_s, n_f]
. La sortie est[upper, lower]
Essayez-le en ligne ici , ou vérifiez tous les cas de test à la fois ici .la source
Gelée , 30 octets
Essayez-le en ligne!
Explication
Remarque
Certaines de ces fonctionnalités sont plus récentes que le défi. Je crois qu'à l'époque où ce défi a été publié,
++®¶×÷++1.96²©HH¤×®½×-,1+®H¤+³÷ç
était une gelée valide (32 octets), manquanteɗ
etØ-
.la source
APL (NARS), 49 caractères, 98 octets
tester
la source