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

Чтобы рассчитать вероятность  `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`  подряд идущих проигрышей, основанную на методах теории Марковских цепей.

![](/files/nCjr4zOqeiBjw9vpdkfX)

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

````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="/files/jvlq5lS5xeGkTWuZTdcn" 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)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bemind.gitbook.io/neural/instrumenty-ocenki/raschet-veroyatnosti-serii-ubytochnykh-sdelok-v-serii-igr..md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
