Avec python il existe plusieurs possibilités pour générer des nombres aléatoires suivant une distribution gaussienne. Par exemple en utilisant gauss du module random, comme ceci:
>>> from random import gauss
>>> gauss(100,15)
82.13399330852374
il est alors possible de créer une liste de nombres aléatoires suivant une distribution gaussienne comme ceci:
x = [gauss(100,15) for i in range(10000)]
et de tracer celle-ci avec matplotlib:
from random import gauss
import matplotlib.pyplot as plt
x = [gauss(100,15) for i in range(10000)]
num_bins = 50
n, bins, patches = plt.hist(x, num_bins, normed=1, facecolor='green', alpha=0.5)
plt.show()
Mais généralement on souhaite obtenir un ensemble de nombres aléatoires suivant une distribution gaussienne stockés dans une matrice. Dans ce cas on utilise plus généralement numpy avec randn ou normal (voir la discussion Python difference between randn and normal pour comprendre la différence). Exemple:
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
mu = 100
sigma = 15
x = mu + sigma * np.random.randn(10000)
num_bins = 50
# the histogram of the data
n, bins, patches = plt.hist(x, num_bins, normed=1, facecolor='green', alpha=0.5)
plt.show()
Recherches associées
Liens | Site |
---|---|
random — Generate pseudo-random numbers | python doc |
numpy.random.randn | numpy doc |
numpy.random.normal | numpy doc |
PLotting a Gaussian in python | math.stackexchange |
Python difference between randn and normal | stackoverflow |
statistics example code: histogram_demo_features.py | matplotlib doc |