Немного лирики.
День. Пятница. Решил сделать перерывчик от работы, и немного отдохнуть. Вспомнилось веселое улучшение экипировки в Лостарке, невероятная удача и «корейский рэндом», и я решил проверить - а так вообще бывает???
Наверняка этот вопрос не у меня одного возникал, поэтому предлагаю Вам ознакомиться с моим развлекательным исследованием и раскрыть, наконец, для себя Великую Тайну Закалки.
К делу.
Желая проверить свою удачу, я решил использовать для этого равнодушный и беспощадный Нормальный закон распределения случайных величин, так как это просто удобно, ну а все что нужно уже есть – вероятность успеха на определенных уровнях закалки:

Взял эти, потому что помню свой опыт.
Формул небудет:) - ограничимся картинками.
Нормальный закон распределения задается неким центральным значением случайной величины, вокруг которой в пределах некоторого отклонения выпадает большинство значений случайной величины, выглядит это так:

Прокомментирую,
центральное значение равно 0,
вероятность того, что случайная величина примет значение от -сигма до +сигма равна 34.1%*2 = 68.2%,
а того что случайная величина примет значение вне этого диапазона 100-68.2 = 31.8%
Почти как у шанса успешной закалки, да?:) Ну чтобы совсем быть близко к шансу закалки нужно лишь сигму слегка увеличить, на глаз 1.07*сигма будет в самый раз.
То есть, если я возьму центральное значение случайной величины, например, равным 0.5 и сигму 0.3, то вероятность того, что случайная величина окажется в пределах 0.2 до 0.8 будет = 68.2%
А значит, так как нам интересны именно те 30% что у шанса закалки, то интервал этих 30% будет (по договорённости «на глаз») вот таким: [-бесконечность;0.5-0.3*1.07] объединённый с [0.5+0.3*1.07;+бесконечность].
Отлично! Осталось только «покидать кубик» милиончик – другой раз, и посмотреть,
как часто подряд нам будет улыбаться Удача. Ну или Неудача:)
Конечно, в игре мы этого делать не будем, для этого достаточно простой скриптик написать, собственно вот он:
Далее, все что до Upd3, слегка утратило свою актуальность.
Код:
import random
max_list = []
times_count = 1000 # число подходов
try_count = 10 # число попыток в подходе
# просто комментарий
for i in range(times_count):
maxcount = 0
count = 0
for j in range(try_count):
middle_value = 0.5 # центральное значение случайной величины
sigma = 0.3 # стандартное отклонение случайной величины
roll = random.normalvariate(0.5, 0.3)
roll_low_limit = middle_value - sigma * 1.07 # верхняя граница ожидаемой величины
roll_high_limit = middle_value + sigma * 1.07 # нижняя граница ожидаемой величины
if roll < roll_low_limit or roll > roll_high_limit: # если вышли за интервал 0,5+-0,03*1,07
count += 1 # ура, неудача!
else: # ура, удача!
if maxcount < count:
maxcount = count
count = 0
if maxcount:
max_list.append(maxcount)
# print("неудач подряд:", maxcount)
pass
max_no_success = max(max_list)
print('Из %d попыток максимальное число неудач подряд: %d ' %
(try_count, max_no_success))
print('Из %d подходов по %d попыток \
максимальное число неудач выпало %d раз' %
(times_count, try_count, max_list.count(max_no_success)))
Чтоб его запустить достаточно иметь python 3.6, но кому лень - я для 1000 подходов по 10 попыток результаты выкладываю, в среднем получается так:
Естественно, чем меньше подходов - тем меньше неудач подряд, и наоборот больше подходов – можно и джек-пот по неудачам выиграть (при тех же самых 10 попытках, разумеется),
При миллионе подходов, к примеру, вот так получилось (результат не средний - считает долго):
Так к чему я это вообще?
Ну, я, например, за те жалкие 100 попыток что успел сделать на данный момент с обновления 2.0 трижды успел 6 неудач подряд выбить, и это при растущей при каждом подходе вероятности (ага, и, вдобавок, применении предметов повышающих щанс успеха;)), что, мягко говоря, выглядит странно.
А как дела с удачей у Вас? Просто вопрос;)
Хорошего времени суток!
UPD2. Отличный ответ дал пользователь MidNightmare
Upd3. В результате длинной дискуссии, скрипт был слегка переделан, исправлена опечатка в интервале и проведены эксперименты при генерации случайных чисел по нормальному и равномерному распределению. Результаты эквиваленты. То что происходит в игре, в идеале должно стремится к тем же соотношениям что и при экспериментах, при прочих равных.
Последний на данный момент (и, вероятно, насовсем) пост с выводами и результатами