LINUX.ORG.RU
ФорумTalks

[мпециалистам по всему][математика][ролевые игры] 10d10

 


0

0

Играл недавно в очередную старую игру (Anvil of Dawn, если кому интересно), наткнулся на зелье дающее перманентно 10d10 HP и попытался перезагрузками получить как можно больше. Минут через 10 сообразил посчитать свои шансы получить 100 из 100 :)

Возник вопрос: какова вероятность на десяти 10-гранных костях выбросить ту или иную сумму? Про 10 и 100 очевидно — по 10^-10. А как с остальными значениями? Тупо посчитать перебором? Можно, но некрасиво.

Существует ли более простой способ вычислить вероятности сумм равномерно распределённых случайных целых чисел? Формулу со свёрткой нашёл (∫p1(t)p2(x-t)dt), но как её применить к дискретному распределению?

★★★★★

Закон нужно ввести - игры после 1994 года нельзя называть старыми. Это для пионеров они, может быть, все старые, а для людей - это разные эпохи.

LordAily
()

Даа, манчкин-математик еще хуже обычного.

Sekai
()

Не моя область, но, вроде бы, простого способа для вычисления вероятности значения суммы n бросков m-гранной кости нету. Свертка работает для двух бросков -- непрерывная, как у тебя, или дискретная.

Вероятность того, что суммой двух бросков окажется Z есть сумма вероятностей всех событий, при которых на первом броске выпадает какой-то i<Z, а на втором выпадает (Z-i). Вот отсюда и свертка.

P(s = Z) = \sum_{i=1}^Z p(X_1 = i)* p(X_2 = Z-i)

Если кость честная, то есть, p(X_1 = i) = p(X_2 = Z-i) = p, то получаем
Z слагаемых по p^2. То есть, вероятность равна Zp^2. Для нормальной 6-гранной кости, таким образом, вероятность получить 4 в сумме двух бросков равна 1/9. То есть, (1,3), (2,2), (2,2), (3,1), все по 1/36.

А вот если кидать n раз, то начинаются уже дебри.

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

> Свертка работает для двух бросков -- непрерывная, как у тебя, или дискретная.

Можно ли применить свёртку 9 раз? По-моему можно. Я только не знаю, как дельта-функции (или что там получается?) интегрировать.

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

> игры после 1994 года нельзя называть старыми ... это разные эпохи

Предложи свой термин для 32-разрядных игр под ДОС, уже знавших про CD.

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

Да можно хоть двадцать раз. Но смотри. Для трех бросков:

вероятность того, что в сумме получилось Z есть сумма вероятностей, что в первые два раза получилось (Z-i), а в последний получилось i.

То есть сумма
\sum_{i=1}^Z { \sum_{j=1}^{Z-i} p(X_1=j)*p(X_2=Z-i-j) } p(X_3=i)

Внутрянная сумма сводима к случаю двую бросков, но для каждого слагаемого внешней суммы она разная.

Есть, наверное, какой-нибудь финт ушами с использованием биномиальных коэффициентов, но сейчас думать лень. :)

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

> Есть, наверное, какой-нибудь финт ушами с использованием биномиальных коэффициентов

Наверное.

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

Дельта-функции легко интегрировать. Интеграл от дельта-функции равен единице. :)

А от произведения 2 таких функций?

p(x)=0.1*δ(x) при x=0,1*n, n=1...10
p(x)=0 во всех остальных точках.

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

>вероятность того, что в сумме получилось Z есть сумма вероятностей, что в первые два раза получилось (Z-i), а в последний получилось i. Смутно пьяный помню теорию игр, но почему не наоборот? Если i у вас число итераций, насколько я понял. Количество бросков тут влияет на вероятность в случае если количество строго ограничено.

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

> Предложи свой термин для 32-разрядных игр под ДОС, уже знавших про CD.

его модераторы не пропустят

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

стоп. Формула Бернулли тут кажется не нужна, достаточно числа разложений суммы на 10^{-10}

bakagaijin
()

Я тихо фигею. Как будто тут никто про производящие функции не слышал.

Производящая функция для одного броска: (z + z^2 + ... + z^10) / 10 -- то есть перед каждым z^n коэффициент дает вероятность выкинуть на кубике n.

Далее, для двух кубиков эти производящие функции надо тупо перемножить, и вуаля, получаем то же самое -- перед каждой степенью коэффициент дает вероятность. Аналогично для 10 бросаний.

Получаем, что вероятность выкинуть в сумме n получается у коффициента со степенью n в разложении: P(z) = (z + z^2 + ... + z^10)^10 / 10^10.

Если кто-то хочет посчитать и довести до ответа, отсылаю к формуле Лейбница для дифференцирования произведений с пометкой, что здесь надо найти n-ую производную от P(z) в нуле.

Но это сложно слишком, я бы через ТФКП искал, интегрирование по кругу от P(z) / z^(n+1) -- это сладенько очень(особенно по единичному).

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

P(z) = (z + z^2 + ... + z^10)^10 / 10^10 = = z^10*(z^10-1)^10/(z-1)^10/10^10

Поделить можно столбиком

З.Ы. Кому не лень, передайте Дяде Федору (ибо я у него в игноре).

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

Не думал, что мои слова кто-то серьезно воспримет.

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

> в твоём случае, результат нужно будет домножить на число способов разложения требуемой суммы на десять слагаемых

Это число способов и определяет искомую вероятность. Только как его найти?

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

> Как будто тут никто про производящие функции не слышал.

Я не слышал. Спасибо.

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

> P(z) = (z + z^2 + ... + z^10)^10 / 10^10 = = z^10*(z^10-1)^10/(z-1)^10/10^10

Спасибо, считаю.

question4 ★★★★★
() автор топика

А оно тебе надо? Думаю для тебя нужно перевести в более "понятную" и принятую в современных RPG нотацию. В данном случае 10-100 HP.

Поскольку о распеределении ничего не сказано - будем считать что равномерно. Значит "в среднем" он дает тебе 55 HP.

По теме - отвечу вопросом на вопрос. Есть два 6-ти гранных кубика. Какова наиболее вероятная сумма очков? Ответ: 6 (1+5, 2+4, 3+3) и 7 (1+6, 3+4, 5+2).

Логика понятна?

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

> А оно тебе надо?

Да.

> Думаю для тебя нужно перевести в более "понятную" и принятую в современных RPG нотацию. В данном случае 10-100 HP.

Там было написанно именно 10d10 :)

> Поскольку о распеределении ничего не сказано - будем считать что равномерно. Значит "в среднем" он дает тебе 55 HP.

О распределении написано. И оно очень неравномерное. И меня интересовало не среднее, а вероятность получить больше 80.

> По теме - отвечу вопросом на вопрос. Есть два 6-ти гранных кубика. Какова наиболее вероятная сумма очков? Ответ: 6 (1+5, 2+4, 3+3) и 7 (1+6, 3+4, 5+2). Логика понятна?

И по этой логике я ещё до того, как задал вопрос, составил программу. Которая тупо перебрала 10 миллиардов вариантов и посчитала их суммы. Результат, если интересно: http://pastebin.com/d46480172 Чтобы получить вероятности, раздели 2-ю колонку на 10^10.

Но переборные решения мне не нравятся. Поэтому и спросил.

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

>И оно очень неравномерное.

Да, точно, это я сглупил. Распределение будет нормальным (Гаусса) т.е. сумма N независимых случайных величин.

Так что копать нужно отсюда. Сварганить формулу с правильным масштабом и смещением и подставить в нее искомое значение.

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

>>Распределение будет нормальным (Гаусса) т.е. сумма N независимых случайных величин.

Гауссовым оно будет только при большом числе кубиков. Точный же ответ дан выше - никуда не надо копать.

gkrellm
()

               10   10  
С возведением ( ∑  z   ) в 10 степень я запутался. С более простой 
               n=1   

          ⎛   10   ⎞
формулой  ⎜z(z  -1)⎟ тоже. Запустил maxima, посчитал 
          ⎜————————⎟
          ⎝ 10(z-1)⎠

ev( (z+z^2+z^3+z^4+z^5+z^6+z^7+z^8+z^9+z^10)^10, expand);

Получилось http://pastebin.com/f33591de8 . Коэффиценты при
соответствующих степенях z совпали с вычисленными перебором.

Спасибо всем, в особенности baloja и www_linux_org_ru за правильные ответы.

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

> Смутно пьяный помню теорию игр, но почему не наоборот? Если i у вас число итераций, насколько я понял. Количество бросков тут влияет на вероятность в случае если количество строго ограничено.

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

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

В смысле не образующей, а производящей!

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

> Получилось http://pastebin.com/f33591de8

Получилось нормальное распределение с центром в 55 и стандартным отклонением 9.2.

http://img89.imageshack.us/img89/3325/plotp.png

Красное -- данные, зеленое -- нормальное. Игра стоила свеч?

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

> Гауссовым оно будет только при большом числе кубиков. Точный же ответ дан выше - никуда не надо копать.

Свертки равномерных распределений очень быстро к гауссовому сходятся. Что мы здесь и наблюдаем. Расхождение меньше, чем в 0.2%

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

> Красное -- данные, зеленое -- нормальное.

А с распределением Стьюдента сравнивать не пробовал?

> Игра стоила свеч?

По крайней мере, узнал про производящие функции.

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

> Расхождение меньше, чем в 0.2%

В среднем — да, но на интересовавших меня хвостах 80-90 и 20-30 расхождения составляют от 9% на 80 и 30 до 184% на 90 и 20.

question4 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.