Псевдовипадковість: події та методи

Дискретно-подієве моделювання в Python

Diogo Costa (PhD, MSc)

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

Рандомізація процесів (або подій)

Що таке рандомізація?

  • Процес зробити щось випадковим
  • У нашому випадку — зробити випадковими події (або процеси)
  • Корисно для моделювання недетермінованих процесів

Варто знати: Комп'ютери за своєю конструкцією не здатні генерувати справді випадкові числа.

  • Поточний час та інші зовнішні змінні часто додають у розрахунки, щоб підвищити випадковість генератора.
Дискретно-подієве моделювання в Python

Випадкове vs. псевдовипадкове

«Справжня» випадковість

  • Числа справді випадкові
  • Випадковість обмежена внутрішніми межами машини

Псевдовипадкова генерація

  • Числа генеруються за ймовірнісними розподілами
  • За збільшення вибірки статистичний розподіл стає помітним

Приклад: Фабрика з ручним складанням

Точкова діаграма тривалості певного ручного складання під час багаторазового повторення.

  • Для наступної псевдовипадкової події доречніше використати ймовірнісний розподіл
Дискретно-подієве моделювання в Python

Пакети для псевдовипадковості

Можна використовувати кілька пакетів статистики:

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

Пакет Random

  • Генерує випадкові та псевдовипадкові числа

Наш фокус

  • Методи, що часто використовують у дискретно-подієвих моделях
Дискретно-подієве моделювання в Python

Випадкові числа в заданому діапазоні

Випадкове ціле у заданому діапазоні

Метод:

random.randint(start, end)

Приклад: Випадкове ціле між 3 (включно) і 9 (не включно)

random.randint(3, 9)
5

Випадкове число з рухомою комою у заданому діапазоні

Метод:

random.uniform(start, end)

Приклад: Випадкове число з рухомою комою між 3 і 9

random.uniform(3, 9)
6.4557754
Дискретно-подієве моделювання в Python

Випадкові вибірки та послідовності

Випадкова вибірка з послідовності

Метод:

random.sample(mylist, k=number_samples)

Приклад: 2 випадкові елементи зі списку

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

Перемішати список (змінити порядок елементів)

Метод:

random.shuffle(mylist)

Приклад: Випадкове переупорядкування елементів списку

mylist = ["book", "pencil", "eraser"]
random.shuffle(mylist)
['eraser', 'pencil', 'book']
Дискретно-подієве моделювання в Python

Нормальний і експоненційний розподіли

Нормальний (гаусовий) розподіл

Метод:

random.gauss(average, standard_dev)

Приклад: Псевдовипадкове число з середнім 100 і стандартним відхиленням 50

random.gauss(100, 50)
123.59383

Експоненційний розподіл

Метод:

random.expovariate(lambda)
  • якщо lambda>0, результати [0, infinity]
  • якщо lambda<0, результати [-infinity, 0]

Приклад: Псевдовипадкове число за експоненційним розподілом з lambda = 1.5: random.expovariate(1.5)

0.2234355
Дискретно-подієве моделювання в Python

Давайте потренуємось!

Дискретно-подієве моделювання в Python

Preparing Video For Download...