Расчет вероятности серии убыточных сделок в серии игр.
Чтобы рассчитать вероятность P(n)
того, что произойдет n
проигрышей подряд в серии из N
игр при заданной вероятности проигрыша p
, можно использовать следующие шаги:
Вероятность одного проигрыша:
p = 1 - 0.475 = 0.525
Вероятность
n
проигрышей подряд: Вероятностьn
подряд идущих проигрышей равнаp^n
.Количество возможных позиций для
n
проигрышей подряд вN
играх: В серии изN
игр естьN - n + 1
возможных начальных позиций дляn
подряд идущих проигрышей.Вероятность отсутствия
n
проигрышей подряд: Для расчета этой вероятности будем использовать обратный подход - сначала рассчитаем вероятность того, что в серии игрn
подряд идущих проигрышей не произойдет, а затем вычтем это значение из единицы.
Для упрощения расчета можно воспользоваться методом численного моделирования или аналитическими методами из теории вероятностей.
Пусть:
p
- вероятность проигрышаp = 0.525
q
- вероятность выигрышаq = 1 - p = 0.475
N
- количество игрn
- количество подряд идущих проигрышей
Таблица для различных значений n
и N
может выглядеть следующим образом:
1000
P(5,1000)
P(10,1000)
P(15,1000)
10000
P(5,10000)
P(10,10000)
P(15,10000)
100000
P(5,100000)
P(10,100000)
P(15,100000)
Для расчета P(n, N)
будем использовать формулу для вероятности отсутствия n
подряд идущих проигрышей, основанную на методах теории Марковских цепей.
Проведем вычисления для заданных значений.
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Функция для расчета вероятности n последовательных проигрышей в N играх
def probability_consecutive_losses(n, N, p):
# Вероятность n последовательных проигрышей
prob_consecutive_losses = p ** n
# Количество возможных позиций для n последовательных проигрышей в N играх
positions = N - n + 1
# Общая вероятность того, что хотя бы одна последовательность из n проигрышей произойдет
total_prob = 1 - (1 - prob_consecutive_losses) ** positions
return total_prob
# Заданные вероятности и количество игр
p_loss = 0.525
# Диапазон значений для n и N
n_min = 5
n_max = 20
n_step = 5
N_min = 100
N_max = 100000
N_step = 10
# Генерация значений n и N
n_values = list(range(n_min, n_max + 1, n_step))
N_values = list(np.logspace(np.log10(N_min), np.log10(N_max), num=N_step, dtype=int))
# Создаем таблицу для хранения результатов
results = np.zeros((len(N_values), len(n_values)))
# Рассчитываем вероятности
for i, N in enumerate(N_values):
for j, n in enumerate(n_values):
results[i, j] = probability_consecutive_losses(n, N, p_loss)
# Преобразуем результаты в DataFrame для удобного отображения
df_results = pd.DataFrame(results, columns=[f'{n} проигрышей подряд' for n in n_values], index=[f'{N} игр' for N in N_values])
# Вывод таблицы результатов
print(df_results)
# Построение графика
plt.figure(figsize=(10, 6))
for j, n in enumerate(n_values):
plt.plot(N_values, results[:, j], label=f'{n} проигрышей подряд', marker='o')
plt.title('Вероятность последовательных проигрышей в зависимости от количества игр')
plt.xlabel('Количество игр')
plt.ylabel('Вероятность')
plt.legend()
plt.grid(True)
plt.xscale('log')
plt.yscale('log')
plt.show()
```

Вот таблица с вероятностями того, что произойдет 5, 10 или 15 проигрышей подряд в серии из 1000, 10000 и 100000 игр при вероятности проигрыша 52.5%:
1000
1.0000
0.7935
0.0606
10000
1.0000
0.9999
0.4693
100000
1.0000
1.0000
0.9982
Из таблицы видно, что вероятность возникновения 5 проигрышей подряд при N = 1000
, N = 10000
, и N = 100000
близка к 1 (т.е. практически гарантирована). Вероятность 10 проигрышей подряд существенно возрастает с увеличением числа игр, достигая практически 1 при N = 100000
. Вероятность 15 проигрышей подряд существенно меньше, но также растет с увеличением количества игр, достигая почти 100% при N = 100000
.
Last updated