python 3.1 - Création d'une distribution normale
J'ai scipy et numpy, Python v3.1
J'ai besoin de créer un tableau 1D de longueur 3 m, à l'aide de nombres aléatoires entre (et y compris) 100-60,000. Il a pour s'adapter à une distribution normale.
L'aide 'a = numpy.aléatoire.standard_normal(3000000)', - je obtenir une distribution normale pour que la longueur requise; vous ne savez pas comment atteindre la plage requise.
Si vous avez besoin d'entiers — vérifier le cas limite: vous pouvez avoir 50% hits coupé à cause de l'arrondissement! Il vous suffit de créer 10000 chiffres et compter le nombre d'occurences de chaque: ils doivent être plus ou moins égale. Voici un exemple de surmonter le bord de cas avec
uniform
de distribution dans 0..100: round(random.uniform(-0.5, 100+0.5))
OriginalL'auteur jimy | 2011-01-15
Vous devez vous connecter pour publier un commentaire.
Une distribution normale standard a moyenne 0 et d'écart type 1. Ce que je comprends de vos exigences, c'est que vous avez besoin d'un ((60000-100)/2, (60000-100)/2) un. Prendre chaque valeur de
standard_normal()
résultat, de le multiplier par la nouvelle de la variance, et ajouter la nouvelle.Je n'ai pas utilisé NumPy, mais une recherche rapide de la documentation dit que vous pouvez obtenir ce que vous voulez directement à la bu à l'aide de
numpy.aléatoire.normal()
Une dernière curiosité: les distributions normales ne sont pas bornées. Cela signifie qu'il n'est pas une valeur avec une probabilité égale à zéro. Vos exigences en termes de moyens et écarts ou déviations standard), et pas de limites.
Merci pour cette! Fallu un certain temps pour obtenir ma tête autour de lui, mais j'y suis arrivé. Comme beaucoup d'un problème de programmation que dans la compréhension de certains des statistiques de base. Des acclamations.
Souvent, cependant, nous trouvons des valeurs sous la forme de plages et veulent juste mettre une distribution normale. Ne doit pas être une obligation de quoi que ce soit. Comment voulez-vous ensuite de voir le nouvelle variance et nouvelle? La moyenne devrait probablement être la valeur autour de laquelle nous voulons que la plupart des valeurs, mais que dire de la variance?
La moyenne et la variance d'un échantillon sont bien défini. La répartition de l'échantillon (ou de la population) ne peut pas être Normal, mais. Par exemple, l'échantillon
[2]*100
(avec une liste d'une centaine de2
) a moyenne de2
, la variance0
, et une distribution Homogène. OIE, la distribution, est une caractéristique de l'échantillon, et non pas quelque chose que l'on peut "mettre" il.Ma formulation était, bien sûr, seulement familier. Je pense que le problème est, que ni numpy, ni de la plaine Python offre une coupés de distribution normale, parce que mathématiquement parlant, il ne serait pas une distribution normale plus. Je suppose que si c'est vraiment important qu'aucune valeur n'est plus grand ou plus petit que max et min, on doit écrire la fonction de soi-même.
OriginalL'auteur Apalala
Si vous voulez vraiment aléatoire d'une distribution normale, vous ne pouvez pas garantir combien les numéros de propagation. Vous pouvez réduire la probabilité des valeurs aberrantes, cependant, en spécifiant l'écart-type
Donc, dans ce cas, veiller à ce que l'écart-type est seulement 1/6 ou 1/7 de la moitié de la distance va vous donner l'assurance raisonnable que vos données ne seront pas dépasser la gamme.
Bien sûr, vous pouvez ne pouvez toujours les valeurs qui tombent en dehors de la plage ici
OriginalL'auteur fmark
essayer cette jolie petite méthode:
Vous aurez envie d'une méthode qui fait juste un nombre aléatoire.
Cela vous donnera une liste avec numitems nombres aléatoires entre min et max.
Bien sûr, 3000000 y a beaucoup d'éléments à avoir en mémoire. Envisager de faire le nombres aléatoires comme ils sont requis par le programme.
random.randrange
ne crée pas une distribution normale. Aussi, l'OP est de demander un tableau NumPy, et non une liste.OriginalL'auteur Eric Pauley