Pseudo-randomizarea evenimentelor și metodelor

Simulare de evenimente discrete în Python

Diogo Costa (PhD, MSc)

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

Randomizarea proceselor (sau evenimentelor)

Ce este randomizarea?

  • Procesul de a face ceva aleatoriu
  • În acest context, a face evenimentele (sau procesele) aleatoare
  • Utilă pentru simularea proceselor nedeterministe

De reținut: Calculatoarele nu pot genera, prin concepție, numere cu adevărat aleatoare.

  • Ora curentă și alte variabile externe sunt adesea folosite în calcule pentru a crește gradul de aleatoriu al generatorului.
Simulare de evenimente discrete în Python

Aleatoriu vs. pseudo-aleatoriu

Generare „cu adevărat" aleatoare

  • Numere cu adevărat aleatoare
  • Aleatoriul limitat de constrângerile mașinii

Generare pseudo-aleatoare

  • Numere generate pe baza distribuțiilor de probabilitate
  • Distribuția statistică devine evidentă pe măsură ce cresc eșantioanele

Exemplu: Fabrică cu sarcină de asamblare manuală

Diagramă de dispersie care arată durata unei sarcini de asamblare manuală repetate de mai multe ori.

  • Distribuția de probabilitate este mai potrivită pentru a genera o apariție pseudo-aleatoare ulterioară
Simulare de evenimente discrete în Python

Pachete pentru pseudo-randomizare

Se pot utiliza mai multe pachete de statistică:

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

Pachetul Random

  • Generează numere aleatoare și pseudo-aleatoare

Focalizarea noastră

  • Metode frecvent utilizate în modelele cu evenimente discrete
Simulare de evenimente discrete în Python

Număr aleatoriu într-un interval dat

Număr întreg aleatoriu într-un interval dat

Metodă:

random.randint(start, end)

Exemplu: Număr întreg aleatoriu între 3 (inclus) și 9 (exclus)

random.randint(3, 9)
5

Număr float aleatoriu într-un interval dat

Metodă:

random.uniform(start, end)

Exemplu: Număr float aleatoriu între 3 și 9

random.uniform(3, 9)
6.4557754
Simulare de evenimente discrete în Python

Eșantioane și secvențe aleatoare

Eșantion aleatoriu dintr-o secvență

Metodă:

random.sample(mylist, k=number_samples)

Exemplu: 2 elemente aleatoare dintr-o listă

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

Amestecarea unei liste (reordonarea elementelor)

Metodă:

random.shuffle(mylist)

Exemplu: Reordonare aleatoare a elementelor listei

mylist = ["book", "pencil", "eraser"]
random.shuffle(mylist)
['eraser', 'pencil', 'book']
Simulare de evenimente discrete în Python

Distribuții gaussiană și exponențială

Distribuție gaussiană

Metodă:

random.gauss(average, standard_dev)

Exemplu: Float pseudo-aleatoriu cu media 100 și deviația standard 50

random.gauss(100, 50)
123.59383

Distribuție exponențială

Metodă:

random.expovariate(lambda)
  • dacă lambda>0, rezultate [0, infinity]
  • dacă lambda<0, rezultate [-infinity, 0]

Exemplu: Float pseudo-aleatoriu cu distribuție exponențială și lambda 1.5: random.expovariate(1.5)

0.2234355
Simulare de evenimente discrete în Python

Să exersăm!

Simulare de evenimente discrete în Python

Preparing Video For Download...