Si vous allez inventer de fausses nouvelles, vous voudrez fabriquer des données pour les sauvegarder. Vous devez déjà avoir des conclusions préconçues et vous voulez des statistiques pour renforcer l'argument de votre logique défectueuse. Ce défi devrait vous aider!
Étant donné trois numéros d'entrée:
- N - nombre de points de données
- μ - moyenne des points de données
σ - écart type des points de données, où μ et σ sont donnés par:
Produire une liste non ordonnée de nombres, 𝑥 i , qui générerait les N , μ et σ donnés .
Je ne vais pas être trop pointilleux sur les formats d'E / S, mais je m'attends à une sorte de décimales pour μ , σ et les points de données de sortie. Au minimum, au moins 3 chiffres significatifs et une magnitude d'au moins 1 000 000 devraient être pris en charge. Les flotteurs IEEE sont très bien.
- N sera toujours un entier, où 1 ≤ N ≤ 1000
- μ peut être n'importe quel nombre réel
- σ sera toujours ≥ 0
- les points de données peuvent être n'importe quel nombre réel
- si N est 1, alors σ sera toujours 0.
Notez que la plupart des entrées auront de nombreuses sorties possibles. Il vous suffit de donner une sortie valide. La sortie peut être déterministe ou non déterministe.
Exemples
Input (N, μ, σ) -> Possible Output [list]
2, 0.5, 1.5 -> [1, 2]
5, 3, 1.414 -> [1, 2, 3, 4, 5]
3, 5, 2.160 -> [2, 6, 7]
3, 5, 2.160 -> [8, 4, 3]
1, 0, 0 -> [0]
la source
+ve
et-ve
signifie?Réponses:
Pyth ,
443534 octetsEssayez-le en ligne! (Le code ci-dessus définit une fonction.
:.*
Est ajouté sur le lien pour appeler la fonction.)Les maths
Cela construit les données symétriquement. Si
N
est pair, alors les données ne sont que la moyenne plus ou moins l'écart-type. Cependant, siN
c'est étrange, alors nous venons d'ouvrir une boîte de vers, car la moyenne doit être présente pour que les données soient symétriques, et donc les fluctuations doivent être multipliées par un certain facteur.Si
n
c'est encoreμ+σ
.μ-σ
.Si
n
est étrangeμ
.μ+σ*sqrt(n/(n-1))
.μ-σ*sqrt(n/(n-1))
.la source
MATL , 22 octets
Merci à @DigitalTrauma pour une correction.
Ordre d' entrée est:
N
,σ
,μ
.Essayez-le en ligne!
Ou consultez une version modifiée qui calcule également la moyenne et l'écart type des données produites, à titre de vérification.
Explication
Le code est divisé en quatre parties:
:
génère le tableau[1 2 ... N]
oùN
est pris comme entrée implicite.t&1Zs/
divise ces nombres par leur écart-type empirique (normalisé calculé parN
) ettYm-
soustrait la moyenne empirique des valeurs résultantes. Cela garantit que les résultats ont une moyenne0
empirique et un écart-type empirique1
.*
multiplie parσ
et+
ajouteμ
, tous deux pris comme entrées implicites.tZN?x3G
gère le cas spécial quiN = 1
,σ = 0
pour lequel la sortie doit êtreμ
. Si c'est effectivement le cas, alors l'écart-type empirique calculé dans la deuxième étape était0
, la division a donnéinf
et multiplié parσ
dans la troisième étapeNaN
. Ainsi, le code fait: si le tableau obtenu est composé de toutes lesNaN
valeurs (codetZN?
), supprimez-le (x
) et appuyez sur la troisième entrée (3G
), qui estμ
.la source
Python , 50 octets
Essayez-le en ligne!
Utilise la
n
distribution des éléments suivante avec moyenne0
et sdev1
:1/n
(ie1
élément), sortie(n-1)**0.5
1-1/n
(ien-1
éléments), sortie-(n-1)**(-0.5)
Ceci est redimensionné pour signifier
m
et sdevs
par transformationx->m+s*x
. Chose ennuyeuse,n=1
donne une division par zéro erreur pour une valeur inutile, donc nous la piratons en faisant/(n-1%n)**.5
, en1%n
donnant0
pourn==1
et1
autrement.Vous pourriez penser que cela
(n-1)**.5
peut être raccourci~-n**.5
, mais l'exponentiation se produit en premier.A
def
est un octet de plus.la source
R,
836253 octetsSi
n=1
, alors il retournem
(puisquescale
reviendraitNA
), sinon il met à l'échelle les données[1,...,n]
pour avoir la moyenne 0 et (échantillon) l'écart-type 1, donc il multiplie pars*sqrt(1-1/n)
pour obtenir l'écart-type de population correct, et ajoutem
pour passer à la moyenne appropriée. Merci à Dason de m'avoir présenté la fonction de mise à l'échelle et de supprimer ces octets!Essayez-le en ligne!
la source
1:n
au lieu dert(n,n)
pour enregistrer 4 octets. Et lascale
fonction pourrait probablement être utile.scale
ce qui est génial.Gelée , 20 octets
Essayez-le en ligne!
Programme complet prenant trois arguments de ligne de commande: n , μ , σ .
Comment?
Crée des valeurs de plancher (n / 2) équidistantes de la moyenne et une valeur à la moyenne si n est impair de telle sorte que l'écart-type est correct ...
la source