Générer des nombres aléatoires suivant une distribution gaussienne avec python


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:

Générer des nombres aléatoires suivant une distribution gaussienne avec python
Générer des nombres aléatoires suivant une distribution gaussienne avec python

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

Image

of