Невероятные приключения теории вероятностей

Антон Антонов

@tonytonov

Вопрос на миллион:

зачем нужна математика?

  • Чтобы развивать абстрактное мышление
  • Чтобы иметь предсказательную силу
  • Чтобы сформировать научную картину мира
  • Чтобы хоть что-то работало, как задумано

Детерминированность

Случайность

Квантовая механика (1905)

Теория вероятностей (1933)

10^{-35} \text{m}
1035m10^{-35} \text{m}
10^{-22} \text{m}
1022m10^{-22} \text{m}
10^{-14} \text{m}
1014m10^{-14} \text{m}

Как выглядит поверхность стола?

Что такое случайность?

Это отсутствие паттерна,

непредсказуемость

Двухминутка истории

Азартные игры

(игральные кости)

Минимизация риска

в торговле (страхование)

~2400 д.н.э.

Знакомый пасьянс?

Теоретический шанс выигрыша: ≈79%

Шанс выигрыша игроком: ≈43%

Теория вероятностей

Где используется теория вероятностей?

А.Н. Колмогоров (1903-1987)

Математическая статистика

  • Подбор моделей, описывающих наблюдаемые данные
  • Прогнозирование

Симуляция процессов

  • Метод Монте-Карло
  • Марковские цепи

Криптография

  • Генерация ключей, цифровых сертификатов
  • Устойчивость ко взлому

Финансовые модели

  • Определение равновесной цены финансового инструмента
  • Управление рисками

Генераторы случайных чисел

Как получить реализации случайной величины на компьютере?

Ответ: использовать детерминированный алгоритм!

PRNG

PseudoRandom Number Generator

Линейный конгруэнтный генератор

X_{n+1} = (a X_n + b) \text{ mod } m
Xn+1=(aXn+b) mod mX_{n+1} = (a X_n + b) \text{ mod } m
\frac{X_{n+1}}{m} \in [0,1]
Xn+1m[0,1]\frac{X_{n+1}}{m} \in [0,1]

C++11, minstd_rand:

b = 0
b=0b = 0
a = 48271
a=48271a = 48271
m = 2^{31} - 1
m=2311m = 2^{31} - 1
X_0 = 2016
X0=2016X_0 = 2016

0.04531552
0.42541747
0.32685232
0.48833458
0.39869517
0.41458000
0.19126152
0.38491058
0.01882955
0.92110228

X_0 = 12344321
X0=12344321X_0 = 12344321

0.47485753
0.84764339
0.59422451
0.81143749
0.89889238
0.43383980
0.88076287
0.30447058
0.09919764
0.36917432

X_0
X0X_0

seed генератора

set.seed(1111)
runif(5)
#[1] 0.4655026 0.4129249 0.9070032 0.1371054 0.7388168
runif(5)
#[1] 0.9763270 0.8799599 0.1167843 0.5462888 0.1401160
set.seed(1111)
runif(5)
#[1] 0.4655026 0.4129249 0.9070032 0.1371054 0.7388168
set.seed(1112)
runif(5)
#[1] 0.7845598 0.5253633 0.3365035 0.5135698 0.5226884

Пример для языка программирования R

Процедурная генерация ландшафта:
Perlin noise

Похожие идеи:

процедурная генерация уровней, текстур и объектов

(XCOM, Borderlands, Spelunky)

искусственный интеллект

(Left 4 Dead)

случайные события

(Fallout)

Подводим итоги

2. Теория вероятностей — раздел математики, изучающий случайные величины

3. Для моделирования на компьютере существуют генераторы псевдослучайных чисел

4. У генераторов есть seed, за счёт чего обеспечивается воспроизводимость

1. Математика язык научной картины мира

5. Для статистического моделирования и анализа данных есть язык программирования R

Невероятные приключения теории вероятностей

By Antonov Anton

Невероятные приключения теории вероятностей

The talk I gave for Digital Banana, a project for computer technology popularization among high school students (http://digital-banana.ru/).

  • 570