# Расчет вероятности серии убыточных сделок в серии игр.

Чтобы рассчитать вероятность  `P(n)` того, что произойдет `n`  проигрышей подряд в серии из  `N`  игр при заданной вероятности проигрыша `p` , можно использовать следующие шаги:

1. **Вероятность одного проигрыша**:  `p = 1 - 0.475 = 0.525`
2. **Вероятность  `n`  проигрышей подряд**: Вероятность  `n`  подряд идущих проигрышей равна  `p^n`.
3. **Количество возможных позиций для  `n`  проигрышей подряд в  `N`  играх**: В серии из  `N`  игр есть  `N - n + 1`  возможных начальных позиций для  `n`  подряд идущих проигрышей.
4. **Вероятность отсутствия  `n`  проигрышей подряд**: Для расчета этой вероятности будем использовать обратный подход - сначала рассчитаем вероятность того, что в серии игр  `n`  подряд идущих проигрышей не произойдет, а затем вычтем это значение из единицы.

Для упрощения расчета можно воспользоваться методом численного моделирования или аналитическими методами из теории вероятностей.

Пусть:

* &#x20;`p`  - вероятность проигрыша  `p = 0.525`&#x20;
* &#x20;`q`  - вероятность выигрыша  `q = 1 - p = 0.475`
* &#x20;`N`  - количество игр
* &#x20;`n`  - количество подряд идущих проигрышей

Таблица для различных значений  `n`  и  `N`  может выглядеть следующим образом:

<table><thead><tr><th width="195">Количество игр (N)</th><th width="208">5 проигрышей подряд</th><th>10 проигрышей подряд</th><th>15 проигрышей подряд</th></tr></thead><tbody><tr><td>1000</td><td>P(5,1000)</td><td>P(10,1000)</td><td>P(15,1000)</td></tr><tr><td>10000 ​</td><td>P(5,10000) ​</td><td>P(10,10000) ​</td><td>P(15,10000) ​</td></tr><tr><td>100000</td><td>P(5,100000) ​</td><td>P(10,100000) ​</td><td>P(15,100000) ​</td></tr></tbody></table>

Для расчета **`P(n, N)`** будем использовать формулу для вероятности отсутствия `n`  подряд идущих проигрышей, основанную на методах теории Марковских цепей.

![](https://1003793957-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyNGqUz7iEjhOGUGQJzfG%2Fuploads%2FtnqWz1nhhzTAJjGmla3V%2Fimage.png?alt=media\&token=0d564ed8-3729-4508-8566-3429cef04ba0)

Проведем вычисления для заданных значений.

````python
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()
```
````

<figure><img src="https://1003793957-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyNGqUz7iEjhOGUGQJzfG%2Fuploads%2FlFAVAWXQZuReBHXpYELh%2F%D0%92%D0%B5%D1%80%D0%BE%D1%8F%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8.png?alt=media&#x26;token=ab50d571-46dc-4ffa-8361-a5fefdbb7942" alt=""><figcaption></figcaption></figure>

Вот таблица с вероятностями того, что произойдет 5, 10 или 15 проигрышей подряд в серии из 1000, 10000 и 100000 игр при вероятности проигрыша 52.5%:

<table><thead><tr><th width="162">Количество игр (N)</th><th width="206">5 проигрышей подряд</th><th width="210">10 проигрышей подряд</th><th>15 проигрышей подряд</th><th>Количество игр (N)</th></tr></thead><tbody><tr><td>1000</td><td>1.0000</td><td>0.7935</td><td>0.0606</td><td></td></tr><tr><td>10000</td><td>1.0000</td><td>0.9999</td><td>0.4693</td><td></td></tr><tr><td>100000</td><td>1.0000</td><td>1.0000 ​</td><td>0.9982</td><td></td></tr></tbody></table>

Из таблицы видно, что вероятность возникновения 5 проигрышей подряд при  `N = 1000`,  `N = 10000`, и  `N = 100000` близка к 1 (т.е. практически гарантирована). Вероятность 10 проигрышей подряд существенно возрастает с увеличением числа игр, достигая практически 1 при `N = 100000`. Вероятность 15 проигрышей подряд существенно меньше, но также растет с увеличением количества игр, достигая почти **100%** при `N = 100000`.

[Ссылка на код статьи](https://github.com/BeMindYou/Lesson/blob/main/Assessment_Tools/%D0%A0%D0%B0%D1%81%D1%87%D0%B5%D1%82_%D0%B2%D0%B5%D1%80%D0%BE%D1%8F%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%81%D0%B5%D1%80%D0%B8%D0%B8_%D1%83%D0%B1%D1%8B%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D1%85_%D1%81%D0%B4%D0%B5%D0%BB%D0%BE%D0%BA_%D0%B2_%D1%81%D0%B5%D1%80%D0%B8%D0%B8_%D0%B8%D0%B3%D1%80_.ipynb)
