Événements pseudo-aléatoires et méthodes

Simulation d'événements discrets en Python

Diogo Costa (PhD, MSc)

Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

Aléatisation d'un processus (ou événement)

Qu'est-ce que l'aléatisation ?

  • Processus qui rend quelque chose aléatoire
  • Ici, rendre des événements (ou des processus) aléatoires
  • Utile pour simuler des processus non déterministes

À noter : les ordinateurs, par conception, ne peuvent pas générer de vrais nombres aléatoires.

  • L'heure courante et d'autres variables externes servent souvent à accroître l'apparente imprévisibilité du générateur.
Simulation d'événements discrets en Python

Aléatoire vs pseudo-aléatoire

Génération « vraiment » aléatoire

  • Nombres réellement aléatoires
  • Aléa limité par les contraintes intrinsèques de la machine

Génération pseudo-aléatoire

  • Nombres générés selon des distributions de probabilité
  • La distribution statistique ressort avec l'augmentation des échantillons

Exemple : Usine avec une tâche d'assemblage manuel

Nuage de points montrant la durée d'un assemblage manuel répété plusieurs fois.

  • Une distribution de probabilité est plus appropriée pour générer la prochaine occurrence pseudo-aléatoire
Simulation d'événements discrets en Python

Trousse pour la pseudo-aléatisation

Plusieurs trousses statistiques peuvent être utilisées :

  • NumPy
  • SciPy
  • statsmodels
  • pandas
  • Random
  • scikit-learn

Trousse Random

  • Générer des nombres aléatoires et pseudo-aléatoires

Notre objectif

  • Méthodes courantes dans les modèles à événements discrets
Simulation d'événements discrets en Python

Nombre aléatoire dans un intervalle donné

Entier aléatoire dans un intervalle donné

Méthode :

random.randint(start, end)

Exemple : Entier aléatoire entre 3 (inclus) et 9 (exclu)

random.randint(3, 9)
5

Nombre réel (float) aléatoire dans un intervalle

Méthode :

random.uniform(start, end)

Exemple : Nombre réel aléatoire entre 3 et 9

random.uniform(3, 9)
6.4557754
Simulation d'événements discrets en Python

Échantillons et séquences aléatoires

Échantillon aléatoire d'une séquence

Méthode :

random.sample(mylist, k=number_samples)

Exemple : 2 éléments aléatoires d'une liste

mylist = ["apple", "banana", "cherry"]
random.sample(mylist, k=2)
['cherry', 'banana']

Mélanger une liste (réordonner les éléments)

Méthode :

random.shuffle(mylist)

Exemple : Réordonnancement aléatoire des éléments

mylist = ["book", "pencil", "eraser"]
random.shuffle(mylist)
['eraser', 'pencil', 'book']
Simulation d'événements discrets en Python

Distributions gaussienne et exponentielle

Distribution gaussienne

Méthode :

random.gauss(average, standard_dev)

Exemple : nombre réel pseudo-aléatoire avec une moyenne de 100 et un écart-type de 50

random.gauss(100, 50)
123.59383

Distribution exponentielle

Méthode :

random.expovariate(lambda)
  • si lambda>0, résultats [0, infinity]
  • si lambda<0, résultats [-infinity, 0]

Exemple : nombre réel pseudo-aléatoire avec une distribution exponentielle et une lambda de 1.5 : random.expovariate(1.5)

0.2234355
Simulation d'événements discrets en Python

Passons à la pratique !

Simulation d'événements discrets en Python

Preparing Video For Download...