À propos de la série
Tout d'abord, vous pouvez traiter cela comme n'importe quel autre défi de golf de code et y répondre sans vous soucier de la série. Cependant, il existe un classement pour tous les défis. Vous pouvez trouver le classement avec plus d'informations sur la série dans le premier post .
Bien que j'ai un tas d'idées alignées pour la série, les défis futurs ne sont pas encore gravés dans le marbre. Si vous avez des suggestions, faites-le moi savoir sur la publication sandbox correspondante .
Trou 2: nombres d'une distribution normale
Je ne peux pas croire que cela n'ait pas encore été fait! Vous devez générer des nombres aléatoires, à partir d'une distribution normale . Certaines règles (la plupart d'entre elles sont probablement couvertes automatiquement par la plupart des soumissions, mais certaines sont en place pour garantir la cohérence des résultats entre des langues très différentes):
Vous devez prendre deux entiers non négatifs en entrée : une valeur de départ
S
et le nombreN
de nombres à renvoyer. La sortie doit être une liste deN
nombres à virgule flottante, tirée d'une distribution normale avec une moyenne de 0 et une variance de 1 . Chaque fois que votre soumission reçoit la même graine,S
elle doit produire le même nombre. En particulier, si elle est appelée une fois avec et une fois avec , les premières entrées des deux sorties doivent être identiques. De plus, au moins 2 16 valeurs différentes de devraient produire des séquences différentes.(S, N1)
(S, N2)
min(N1, N2)
S
Vous pouvez utiliser n'importe quel générateur de nombres aléatoires intégré documenté pour tirer des nombres d'une distribution (approximativement) uniforme , à condition que vous puissiez le transmettre
S
et qu'il prenne en charge au moins 2 16 graines différentes. Si vous le faites, le RNG devrait être en mesure de renvoyer au moins 2 20 valeurs différentes pour tout nombre donné que vous lui demandez.- Si votre RNG uniforme disponible a une gamme plus petite, n'est pas semable ou prend en charge trop peu de graines, vous devez d'abord construire un RNG uniforme avec une gamme suffisamment large au-dessus de celui intégré ou vous devez implémenter votre propre RNG approprié en utilisant la graine. Cette page peut être utile pour cela.
- Si vous n'implémentez pas d'algorithme établi pour générer des distributions normales, veuillez inclure une preuve d'exactitude. Dans les deux cas, l'algorithme que vous choisissez doit produire une distribution normale théoriquement exacte (sauf limitations des PRNG sous-jacents ou types de données à précision limitée).
- Votre implémentation doit utiliser et renvoyer des nombres à virgule flottante (au moins 32 bits de large) ou des nombres à virgule fixe (au moins 24 bits de large) et toutes les opérations arithmétiques doivent utiliser la pleine largeur du type choisi.
- Vous ne devez pas utiliser de fonctions intégrées directement liées à la distribution normale ou aux intégrales gaussiennes, comme la fonction d'erreur ou son inverse.
Vous pouvez écrire un programme complet ou une fonction et prendre une entrée via STDIN, un argument de ligne de commande, un argument de fonction ou une invite et produire une sortie via une valeur de retour ou en imprimant vers STDOUT (ou l'alternative la plus proche).
S
et N
seront des entiers non négatifs, chacun inférieur à 2 20 . La sortie peut être dans n'importe quelle liste ou format de chaîne pratique et sans ambiguïté.
Il s'agit du code golf, donc la soumission la plus courte (en octets) l'emporte. Et bien sûr, la soumission la plus courte par utilisateur entrera également dans le classement général de la série.
Classement
Le premier post de la série génère un classement.
Pour vous assurer que vos réponses s'affichent, veuillez commencer chaque réponse par un titre, en utilisant le modèle Markdown suivant:
# Language Name, N bytes
où N
est la taille de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores dans le titre, en les barrant. Par exemple:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(La langue n'est pas actuellement affichée, mais l'extrait de code l'exige et l'analyse, et je pourrai ajouter un classement par langue à l'avenir.)