О рандоме, заточках и танцах с бубном

  • Автор темы Infernale
  • Дата начала
I

Infernale

Всем привет! Хочу рассказать вам, как работает, так называемый "корейский" рандом.

На тему рандома было придумано сотни шуток, и ещё больше способов обмануть его (по одному на каждого игрока). Я тоже перепробовал множество тактик, начиная от заточки "елочкой", заканчивая беганьем вокруг статуи Шилен. Но некоторые вопросы так и оставались без ответа:
  • Возможно ли вычислить последовательность и предугадать результат последующей заточки?
  • Как выгоднее точить, один предмет по максимуму, или несколько по очереди?
  • Зависит ли шанс заточки от кармы/времени суток
Эти загадки не давали мне покоя, поэтому я отправился за исходниками. Конечно же, к исходникам l2name у меня доступа нету, поэтому я взял сорцы l2phoenix, на основе которых написан l2name, как и многие другие сервера.

В коде определение успешности заточки выглядит так:

public static boolean chance(final double chance) {
return _rnd.nextDouble() <= chance / 100.;
}

В двух словах, генератор псевдослучайных чисел (далее ГПСЧ) выдает число в промежутке [0..1], и если результат меньше шанса на заточку (в нашем случае 0.7), то энчант успешен, иначе фейл.

Давайте посмотрим поближе на наш ГПСЧ. В нашем случае используется реализация Вихря Менсенна. Этот алгоритм удачен и популярен, так как:
  • имеет огромный период
  • новый результат практически не зависит от предыдущего

Первым делом я решил проверить равномерность распределения получаемых значений. Для большей наглядности для получаемых значений был задан диапазон [0, 99]. В результате одного миллиарда итераций была построена гистограмма


На оси Y указано количество попаданий в промежуток [0, 1), [1, 2), [2, 3) и т. д. Как видно, среднее значение 10кк и максимальное отклонение от среднего значения 0.07%. Это показывает, что ГПСЧ выдает равномерное распределение. В результате можно сделать первый вывод:

Шанс заточки, установленный админами, будет соответствовать реальности.

Далее мною эмулировался процесс заточки оружия с +5 до +16 при заданном шансе 70%. Эмулировались два способа заточки:
  1. Одно оружие точится до упора
  2. Последовательно точится n пушек по +1 заточке. При фейле добавляется новая пушка на +5 вместо сломанной.
Для обоих сценариев выдавалось одинаковое количество заточек. В среднем, после использования 1 000 000 заточек, до +16 успешно дотачивалось 6 000 оружий


Кстати, стоит отметить, что первый вариант заточки в игре практически невозможно повторить, так как один и тот же инстанс ГПСЧ используется для вычисления тысяч других случайных событий в игре. То есть чистую последовательность в игре вы вряд ли увидите.

Отвечая на вопросы из начала статьи:
  • Вычислить последовательность? Нет, период ГПСЧ 219937 − 1. Даже не задумывайтесь о том, сколько цифр в этом числе и когда он повторится.
  • Как же точить? Успешность заточки не зависит от "тактики".
  • А как же фаза луны? Сторонние факторы не влияют на успешность заточки.
В общем, выводы делайте для себя сами, статью можно игнорировать и дальше точить после трех критов по мобу или шестерки на кубике, теории заговора бессмертны=)

P.s. Интересный факт, авторы ГПСЧ Макото Мацумото и Такудзи Нисимура японцы, а вся слава достается корейцам=)
 

Courvoisier

*Мастер*
Нектропостеры :diablo:

В тему топика, раз уж я его пропустил в 2015 году - по личным ощущениям лучше точится вечером, когда много народу. Видимо это связано с тем что больше событий происходит, и быстрее двигается последовательность ГПСЧ.

Ну и плюс неоднократно слышал да и испытывал сам, что точка "парами" получается выгоднее чем "каскадом".
 

Sunny

**Знаток**
Courvoisier написал(а):
Нектропостеры :diablo:

В тему топика, раз уж я его пропустил в 2015 году - по личным ощущениям лучше точится вечером, когда много народу. Видимо это связано с тем что больше событий происходит, и быстрее двигается последовательность ГПСЧ.

Ну и плюс неоднократно слышал да и испытывал сам, что точка "парами" получается выгоднее чем "каскадом".
про пары плюсану
 

deinstaLLation

Постоялец
Courvoisier написал(а):
Нектропостеры :diablo:

В тему топика, раз уж я его пропустил в 2015 году - по личным ощущениям лучше точится вечером, когда много народу. Видимо это связано с тем что больше событий происходит, и быстрее двигается последовательность ГПСЧ.

Ну и плюс неоднократно слышал да и испытывал сам, что точка "парами" получается выгоднее чем "каскадом".
Че ты несёшь, генерация псевдослучайной последовательности не может быть привязана к действиям игрока, т.к. это будет абсурд. Она привязана к сторонним машинным факторам, например, к тактам процессора. Процессор в секунду совершает миллионы тактов, следовательно, в секунду генерируется миллионы чисел, часть из которых сохраняется в буфере ГПСЧ, остальные ПСЧ, уже совершенные, находятся в очереди на выбытие, т.е. ждут момента своего удаления.
Такими образом, не важно есть ли вообще на сервере игроки, или все игроки сервера могут тупо встать и ничего не делать - генерация будет продолжать идти. В противном случае нарушаются все статистические принципы, связанные с адекватностью формирования закона распределения для каждого игрока и эмпирические законы распределения никогда не будут сходится к теоретическим.
 

Courvoisier

*Мастер*
deinstaLLation написал(а):
Че ты несёшь, генерация псевдослучайной последовательности не может быть привязана к действиям игрока, т.к. это будет абсурд. Она привязана к сторонним машинным факторам, например, к тактам процессора. Процессор в секунду совершает миллионы тактов, следовательно, в секунду генерируется миллионы чисел, часть из которых сохраняется в буфере ГПСЧ, остальные ПСЧ, уже совершенные, находятся в очереди на выбытие, т.е. ждут момента своего удаления.
Такими образом, не важно есть ли вообще на сервере игроки, или все игроки сервера могут тупо встать и ничего не делать - генерация будет продолжать идти. В противном случае нарушаются все статистические принципы, связанные с адекватностью формирования закона распределения для каждого игрока и эмпирические законы распределения никогда не будут сходится к теоретическим.
Ну так и заебись. Я что, против чтоли? Я не математик даже и близко, и на истину тут не претендую.
Субьективно - есть такое наблюдение. Конкретно, у меня и у моих сопартийцев вечером на нейме на хрониках ГП2 и на Дефо на хрониках ХайФайв точилось лучше чем днём. Я честно неебу, с чем это связано. А может и не связано ни с чем.

Ты если вкурсе - обьяснил бы лучше "популярным" языком. Начни с "такта" и "генерации".
 

deinstaLLation

Постоялец
Courvoisier написал(а):
Ну так и заебись. Я что, против чтоли? Я не математик даже и близко, и на истину тут не претендую.
Субьективно - есть такое наблюдение. Конкретно, у меня и у моих сопартийцев вечером на нейме на хрониках ГП2 и на Дефо на хрониках ХайФайв точилось лучше чем днём. Я честно неебу, с чем это связано. А может и не связано ни с чем.

Ты если вкурсе - обьяснил бы лучше "популярным" языком. Начни с "такта" и "генерации".
Качественные ГПСЧ создают равномерно распределённые псевдослучайные последовательности, о чем говорил автор этой темы, т.е. каждое число только по 1 разу выпадает и пока все числа по 1 разу не выпдут - конкретное число не может выпасть 2 и более раз. На практике такое может случиться, но если число выпадет 2 раза за минуту скажем, оно потом не будет вообще падать. Т.е. равномерность достигается на крупных множествах сгенерированных чисел. На мелких наблюдаются перекосы, т.е. асимметрия равномерности - либо слишком много подряд удач, либо слишком много неудач. А в среднем получается как раз равномерно все. Ну так вот сначала у тебя и твоих братков идет перекос в сторону слома, пусть это утро будет. Затем по закону больших чисел начинает перекашивать в сторону успешной модификации, пусть это вечер будет. А то что ты притягиваешь время суток - так это никоем образом влиять не должно. Исключением может стать смена первичной последовательности, которая задается до процесса генерации и определяет особенности последующей генерации. Тогда может как-то это влияет, но насколько мне известно смена начальной последовательности происходит после перезагрузки. Выключение серверов сбрасывает начальные данные для генерации ПСЧ. Вот и все.
А с твоей теории, например один точнул успешно - второй сломал, первый снова точнул успешно - второй снова сломал - первый СНОВА ТОЧНУЛ УСПЕШНО, а второй опять сломал. Тогда для одного игрока 100% шанс успеха, а для 2-ого - 0% успеха. Это бсурдно. Я не знаю как именно генерируются числа - от такта процессора или еще чего-то или от действий игроков, но если я узнаю, что от действий игроков - то валить с этой игры надо, т.к. это полный абсурд, искажающий все что можно.
Я так понял ты задрачиваешь эту игру. Проведи два эксперимента.
1)Возьми 10 игроков, включая себя и тупо в разных локациях валите мобов, из которых дропается какая-то редкая вещь. Например, 9-рым эта вещь выпадет лишь через месяц задрачивания, а 10-ому - за 2 часа после начала эксперимента. Но, если этот 10-ый продолжит месяц задрачивать - ему больше не выпадет, а вам в конце месяца выпадет. И в итоге все за месяц выбьют из мобов 1 предмет. Так что будет не важно - когда ты выбил из моба предмет - в начале или в конце месяца мободроча. В среднем каждый получит одинаковый итог. Если же будет не так на практике - тогда есть подозрения, что ГПСЧ реально зависит от действий игроков, но опять это не достоверно.
2) Возьми 2 группы игроков - первая группа только утром точит, а вторая только вечером и посмотрите через 100 дней будет ли у одной группы, точащей вечером, больше в итоге успешно заточенных предметов чем у другой, точащей днем. Если разница будет небольшая - то нет разницы, когда точить. А если есть - тогда это свидетельствует о неправильности работы ГПСЧ или же о неправильном алгоритме генерации, типа когда числа генерируются когда игроки совершают действия.
Потом выложишь сюда результаты. Я не могу сам провести, т.к. не гамаю уже
 

Pause

Странник
deinstaLLation написал(а):
2) Возьми 2 группы игроков - первая группа только утром точит, а вторая только вечером и посмотрите через 100 дней будет ли у одной группы, точащей вечером, больше в итоге успешно заточенных предметов чем у другой, точащей днем. Если разница будет небольшая - то нет разницы, когда точить. А если есть - тогда это свидетельствует о неправильности работы ГПСЧ или же о неправильном алгоритме генерации, типа когда числа генерируются когда игроки совершают действия.
Потом выложишь сюда результаты. Я не могу сам провести, т.к. не гамаю уже
часовой пояс учитывать? или проводить тест по своему времени?
 

deinstaLLation

Постоялец
Pause написал(а):
часовой пояс учитывать? или проводить тест по своему времени?
ну спроси у чувака, в каком он часовом поясе. Вот с его слов в его часовом поясе вечером выше шанс чем днем. Значит от его пояса отталкивайся.
Каждый день в каждой группе каждый человек должен провести хотябы по 10 точек. Не важно как закончатся точки. Если это 10 неудач - 10 артов слома. Если 10 удач - один арт будет на +10. Важно подчитывать не ранг заточки артов или колличество заточенных и сломанных артов, а лишь колличество успехов/неуспехов. Например, у одного 7/10, у другого 5/10, у третьего 6/10 и так далее.
Так же нужно чтобы обе группы точили только один тип предмета, например, лук икара или резак апокалипсиса. При этом все тестеры должны пользоваться одними и теми же предметами на заточку. Т.е. все в равных условиях должны быть. Самый банальный вариант - юзать всеми простые точки, без камней там, без рубашек.
Каждые 10 дней сверяйте результаты. Если за каждые 10 дней все сильнее будет наблюдаться разрыв между успехом групп, т.е. за первые 10 дней у одной группы 150 успехов из 500, а у другой 200, во вторую десятку дней у первой 180 успехов, а у второй 240 и так далее - то да, есть закономерность. И время суток влияет. Если первые 10 дней одна группа тестеров лидирует, вторые 10 дней другая и так то одни лучше точат, то другие, а в среднем выйдет поровну - то нет разницы.
Впринципе, если взять д грейд какой-нить - не затратно, зато можно понять поведение ГПСЧ.
 
Сверху