LINUX.ORG.RU

Как аналитически решить задачу на вероятность?

 , ,


0

2

Задача такая, человек кидает кубик пока у него не выпадет одно и то же значение 4 раза подряд. Какова вероятность что ему потребуется 1000 бросков или меньше?

Логику решения в общем случае я понимаю.

Для четырех бросков у нас всего 6 вариантов, это 6 единиц, 6 двоек и т.д. Всего 6^4 вариантов.

Для пяти бросков вариантов с пятью одинаковыми уже не будет т.к их исключили на прошлом шаге, но каждый из прошлых шести даст ещё пать вариантов, например 21111, 31111, 41111, 51111, 61111 и т.д. А всего 6^5-6 вариантов.

И т.д

В результате получим вероятность как сумму 6/6^4+(1-6/6^4)(6*5/(6^5-6)) + ..., где каждый член будет произведением (1 - прошлый ряд)(число прошлых комбинаций * 5/(6^N - сумма исключенный ранее комбинаций)).

Но это адская рекурсивная формула! Или я где-то косяк?

А как такую задачу решить аналитически? Не смог нагуглить формулу для моего случая.

★★★★★
Ответ на: комментарий от ya-betmen

В моем при 4х бросках он получит 2 успеха (на 2^4=16 бросков) и для 14 бросков он продолжит кидать дальше, т.е доя 5и бросков исключит варианты ооооо, оооор, ррррр и рррро, оставив всего 2: роооо и орррр. При этом суммарное число вариантов на 5 бросков: 32-4=28.

Почему исключит-то? оооо[закончил] это с вероятностью 1 или ооооо или оооор. Нас устраивает вариант оооо[закончил], равно как и ооооо или оооор. Исключать надо только если у нас по условию он должен закончить именно на пятом броске, а не на любом.

CrX ★★★★★
()
Ответ на: комментарий от CrX

Так если человек останавливается если выкинул 4 одинаковых, то ты никогда не получишь пять одинаковых среди успешных исходов.

ya-betmen ★★★★★
() автор топика

Попробовал практическим путем, результат варьируется от 1 до 8 удачных совпадений за тысячу бросков, при условии, что при достижении четырех последних одинаковых значений все начинается сначала. Если результат не обнулять, т.е. пять и более выпадений, то общая картина сильно не меняется.

for (($i = 0), ($count = 1); $i -lt 1000; ($i++),($count++))
{
    $result += [string](Get-Random (1..6))
    if ($result -match '(\d)\1\1\1$')
    {
        '{0} бросок' -f $count
        $result = $null
    }
}

<#
646 бросок
842 бросок
980 бросок
#>
dmitry237 ★★★★
()
Ответ на: комментарий от Obezyan

Я озвучил вероятность: P = 1/216, более того, я могу озвучить и общую формулу:

P = 1/6^(n-1), где n - желаемое число бросков подряд

Это ваша формула для n подряд из n всего. И она вернка, как и 1/216.

Неверны дальнейшие рассуждения о том, что если это 216 раз повторить, то 4 подряд будет с вероятностью равной единице. Не будет. И при 1000 не будет. Я выше объяснил, почему.

Ваш четкий ответ я так и не увидел, может пропустил? Назовите свою вероятность P и общую формулу расчета для этой задачи.

Я его выше дал три раза: два раза в ответах ТС’у и один раз — firkax’у.

Впрочем, firkax ниже показывает, что эта формула неточна. И похоже, что он прав.

Однако это не делает ваши рассуждения или формулу верными. Те, что следуют уже после вот этих первых трёх шаго. Там начинается совсем лютый бред, намного дальше от реальности, чем мой вариант.

CrX ★★★★★
()
Ответ на: комментарий от dmitry237

Осталось посчитать, какое количество попыток нужно, чтобы считать что метод монте-карло сработал.

Ну и гсч проверить.

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от ya-betmen

Осталось посчитать, какое количество попыток нужно, чтобы считать что метод монте-карло сработал.

Я об этом тоже подумал, из миллиона попыток 3940 совпадений (0.394%)

dmitry237 ★★★★
()
Ответ на: комментарий от cobold

математические теории подтвердить опытом вообще не всегда возможно, ибо имеет математика дело с абстракциями, а опыт - с материальными сущностями, которые еще и денег стоят.

alysnix ★★★
()
Ответ на: комментарий от firkax

ОК, я понял, что всё сложнее. Прям совсем на пальцах не получается, не придумал ничего лучше, чем использовать матрицу перехода.

Она у нас такая (состояние 0 — это один одинаковый бросок подряд, состояние 1 — два одинаковых броска подряд и т.д.)

{ 5/6  1/6    0    0 }
{ 5/6    0  1/6    0 }
{ 5/6    0    0  1/6 }
{   0    0    0    1 }

(Тяжко без LaTeX)…

Ну и вот её нам надо возвести в 1000 степень, точнее в 999, и взять вероятность перехода из состояния 0 в состояние 3 (четыре броска подряд).

#!/usr/bin/env python3
import numpy as np

matrix = np.array([
    [5/6, 1/6, 0, 0],
    [5/6, 0, 1/6, 0],
    [5/6, 0, 0, 1/6],
    [0, 0, 0, 1]
])

matrix_for_1000_rolls = np.linalg.matrix_power(matrix, 999)

probability_of_4_same = matrix_for_1000_rolls[0, 3]
print(probability_of_4_same)

Результат 0.9797612550208008, что совпадает с приближённым результатом симуляции:

#!/usr/bin/env python3
import random

def rolldice(rolls):
    sames = 0
    prev = None
    for _ in range(rolls):
        roll = random.randint(1, 6)
        if roll == prev:
            sames += 1
            if sames == 4:
                return True
        else:
            sames = 1
        prev = roll
    return False

probability = [rolldice(1000) for _ in range(1_000_000)].count(True) / 1_000_000
print(probability)

Результат: 0.979745


Особо упростить не получается. Может утром чего придумаю. Вообще надо было давно спать идти, а не в 3 часа ночи всякую фигню считать :D

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 2)
Ответ на: комментарий от CrX

а 1/6, то чтобы оно случилось с вероятностью равной единице, надо кинуть 6 раз. Ну то есть, если мы бросаем кубик 6 раз, то у нас с вероятностью единица выпадет шестёрка хотя бы раз. Всё ещё не противоречит интуиции, не? ОК, тогда пусть будет 1/2. По «обезьянним подсчётам» (сам так назвал, я ни при чём) получается 2 * 1/2 = 2/2 = 1. То есть, чтобы гарантированно выкинуть решку, достаточно подбросить монету 2 раза. Уж это-то точно должно «резануть» — так не бывает.

А если миллион раз кинуть и не выпадет 6ка? А если гугл раз кинуть и не выпадет 6ка? А где на практике тервер применяется кроме влажного фантазирования математиков?

bomjevik
()
Ответ на: комментарий от bomjevik

А если миллион раз кинуть и не выпадет 6ка?

То ты большой молодец.

А если гугл раз кинуть и не выпадет 6ка?

То состаришься и умрёшь намного раньше, чем узнаешь.

Какого ты вообще ответа ждёшь на такие вопросы? Что это вообще за вопрос такой, начинающийся с «а если» вместо вопросительного слова? Я предполагаю, что он достраивается до «Что будет, если …». Но тогда он особого смысла не имеет. Ничего особого не будет. Мы констатируем, что произошло крайне маловероятное событие, вот что будет. Больше вроде ничего. Солнце не встанет на западе, кошки не загавкают, люди не перестанут делать глупости.

А где на практике тервер применяется кроме влажного фантазирования математиков?

Практически везде, от физики до экономики. И даже до бытовых задач (кроме дебилов, конечно, они не применяют).

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от CrX

Нормальное распределение цены на фьючерсы газа на генри хабе)

bomjevik
()
Ответ на: комментарий от ya-betmen

Тогда нормальное распределение укатится в сторону поступления в МГУ и вместо хелкетов, АМГ и рс7 на студенческой парковке там будут толпы таких ребят как мы с вами, весело выбегающих из травмвая вперёд к изучению сабжа в б-годельне

bomjevik
()
Ответ на: комментарий от firkax

Давайте тогда тахионы не считать магией уравнений Максвелла, к чему отсылка к школе? Зумерам уже тервер преподают в школах?

bomjevik
()
Ответ на: комментарий от bomjevik

Если бы тервер работал в трейдинге, то все бы стали миллиардерами)

Если бы не работал, трейдинга вообще бы не существовало. Проблема в том, что для трейдинга нужна не только и не столько теория вероятностей, сколько теория игр. И теория игр там тоже работает, позволяя людям заниматься этим профессионально, оценивать риски и зарабатывать. Чудес, естественно, не бывает, и никого оно по манованию волшебной палочки миллионером не сделает.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 2)
Ответ на: комментарий от bomjevik

Зумерам уже тервер преподают в школах?

Не знаю, как зумерам, а в 90-е годы точно преподавали. Основы, естественно, в дебри не углубляясь. Не вижу причин, почему должны были прекратить.

CrX ★★★★★
()
Ответ на: комментарий от bomjevik

То ощущение когда не понимаешь, то ли собеседник не понял, что ты написал, то ли понял, но продолжает тролить тупняком.

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от bomjevik

Начал же ведь за здравие:

Есть вероятность, что такое никогда не произойдет.

И это верное утверждение. Более того, эту вероятность можно посчитать. Вероятность того, что за 1000 бросков кубика этого (четырёх одинаковых цифр подряд) не произойдёт, составляет примерно 2.024%.

То же самое получается в эксперимента (см. выше). Если произвести весь этот эксперимент с «до 1000 бросков» миллион раз, то он завершится успехом (нахождением этой последовательности в 4 одинаковых броска подряд) в 979745 случаях, ну а неуспехом («такого никогда не произойдёт») в 20255 случаях соответственно. Естественно, в другой миллион попыток результат будет чут-чуть другой, но близкий. Конечно же я не кидал реальный кубик почти миллиард раз, а просимулировал бросок кубика с помощью гпсч. Если заняться нечем, можно и физически кубик покидать. Но результаты будут примерно такими же (если не свихнёшься от сего увлекательного занятия).

CrX ★★★★★
()
Ответ на: комментарий от ya-betmen

Ну зря ты тервер тупняком считаешь, погуглил, нашел его практическое применение, с сентября 23 года им школоте мозги разминают)

bomjevik
()
Ответ на: комментарий от yvv1

Бесполезные ключевые слова оставь для нубов, которые ищут неправильные/ненужные ответы в поисковых системах. А сам прочти вопрос внимательнее.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Вероятность того, что на кубике выпадет одно и то же значение несколько раз подряд задаётся биномиальным законом. Далее несложно посчитать вероятность того, что это произойдёт хотя бы один раз на 1000 бросков.

yvv1
()
Ответ на: комментарий от yvv1

Нет, не задаётся. Повторю, хватит устраивать поиск по ключевым словам и прочти внимательно задачу.

firkax ★★★★★
()
Ответ на: комментарий от ya-betmen

Биномиальное распределение не про подряд.

Ну почему же? Тебе нужна вероятность 4х успехов из 4х попыток. Затем вероятность одного успеха из 1000 попыток. Или я чего-то не понимаю?

yvv1
()
Ответ на: комментарий от yvv1

Мне нужна вероятность получить подряд 4 одинаковых значения за не более 1000 попыток.

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от yvv1

Ну почему же? Тебе нужна вероятность 4х успехов из 4х попыток.

С этим-то как раз легко, тут 1/6³, но попыток у нас не 4.

Затем вероятность одного успеха из 1000 попыток. Или я чего-то не понимаю?

Не 4 кубика кидаются 1000 раз, а один кубик до 1000 раз, останавливаясь, если 4 одинаковых числа выпало подряд.

Я сперва наивно попробовал рассуждать, но верно заметили, здесь не независимые попытки. В итоге решил, но только с применением матриц. В рамках (условно) арифметики за 6 класс что-то не получается (ну если не писать формулу из 1000 членов, конечно). Другого решения, чтобы при этом ещё и проверить результат можно было (он-то известен, ~98% — его можно и симуляцией набрутфорсить — ищем именно путь), никто не предоставил пока.

CrX ★★★★★
()
Ответ на: комментарий от ya-betmen

https://ru.wikipedia.org/wiki/Матрица_перехода

Состояние 0 — один «одинаковый бросок» подряд, состояние 1 — два «одинаковых броска подряд», и т.д. Состояние 3 — четыре одинаковых броска подряд. Искомое.

5/6 — это вероятность перехода из состояния 0 в состояние 0 (снова) — то есть, что выпадет НЕ то же число и мы вернёмся к «есть одно одинаковое число подряд», из 1 в состояние 0, из состояния 2 в состояние 0. 1/6 — соответственно из состояния 0 в состояние 1, из состояни 1 в состояние 2, из состояния 2 в состояние 3. Нули — вероятности перехода в другие состояния (нельзя сразу из 0 в 2. Единица — из состояния 3 в состояние 3 (уже есть 4 броска, дальнейшие броски ни на что не влияют).

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от CrX

5/6 — это вероятность перехода из состояния 0 в состояние 0

Ааа, теперь понял логику.

ya-betmen ★★★★★
() автор топика

Пусть

N(n): вероятность что не упало одно и то же значение 4 раза подряд, вплоть до n-того броска включительно.

P(n): вероятность что как раз на n-том броске, ВПЕРВыЕ попались 4 одинаковых значения (очевидно, последние четыре).

Имеем очевидную зависимость:

A) N(n) = 1 - (P(1) + P(2) + P(3) + .... + P(n))

Далее, чтобы впервые попались 4 одинаковых значения на n-том броске, нужно чтобы вплоть до n-3тьем не попадались одинаковых значения, и потом три раза подряд выпало значение то же самое как последнее при n-3 тьем броске. Или:

B) P(n) = N(n-3)*1/6*1/6*1/6= N(n-3)/6^3

Еще, для начальных значений знаем, что

P(1), P(2), P(3) = 0; 
N(1), N(2), N(3) = 1; 

Из A и B выше можно рекуррентно вычислить как N(n) так и P(n) для любого n совершенно точно (не знаю возможно ли расписать их в явном виде, как функциональной зависимости от n в виде формулы).

Например, для n=4 получаем из B и A соответно:

P(4)=N(1)/6^3 = 1/6^3
N(4) = 1 - (P(4) + 0 + 0 + 0) = 1 - 1/6^3

Искомая вероятность, это

1 - N(1001) 

(неверно, что вплоть до 1001-ного броска ни разу не попались 4 одинаковых)


P.S.

Вместо A) можно пользоваться эквивалентным соотношением (выводится легко если расписать A) для двух последовательных n и вычесть друг от друга):

N(n) = N(n-1) - P(n) 

или в итоге используя B, свести к единственном рекуррентном соотношении для N(n)

N(n) = N(n-1) - N(n-3)/6^3 
manul91
()
Последнее исправление: manul91 (всего исправлений: 2)
Ответ на: комментарий от manul91

Ошибся, для B будет правильным:

Далее, чтобы впервые попались 4 одинаковых значения на n-том броске, нужно чтобы вплоть до n-4тьем не попадались одинаковых значения, потом выпало значение отличного от n-4-того, и после этого три раза подряд выпало значение то же самое как предпоследнее при n-4 тьем броске. Или:

B) P(n) = N(n-4)*5/6:1/6*1/6*1/6= N(n-3)*5/6^4

… и далее исправить все по тексту.


Ошибка потому что в прежнем случае не учитывался вариант в которым четыре упали еще в первого (второго, третьего и т.д) броска, если последние повторялись (но не 4 из них)

manul91
()
Ответ на: комментарий от ya-betmen

рекурсивная формула, от которой хотелось избавиться.

«Лёгким движением руки рекурсия превращается, превращается рекурсия… в элегантный цикл» ©.

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

Сбыча моих мечт это посчитать руками.

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от ya-betmen

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

Погуглите homogeneous recurrence relation solutions

Нерекурсивный ответ в явном аналитичном виде через n есть, но получается заведомо неудобоваримым (нужно решать уравнение четвертой степени - в данном случае это можно в явном аналитичном виде wolfram alpha его решает, но корни выглядят устрашающе)

Полагаю в данном случае задача «программисткая», т.е. найти правильное рекурсивное выражение, и далее посчитать как раз программно через рекурсию в несколько строчек. Ответ получится однако совершенно точным (а не приблизительным как через монте-карло что здесь предлагалось), и рассчет будет намного эффективней.

manul91
()
Последнее исправление: manul91 (всего исправлений: 2)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)