Не так давно нашел в обсуждениях тему, в которой даны ссылки на аж 44 (!) способа заточки. Многие из них очень похожи - в их основе лежат
попытки угадать случайные значения. Но все эти методы не подкреплены никакими фактами (см. раздел "Распространенные заблуждения"), так что
вопрос оптимального алгоритма заточки по прежнему открыт. В данной статье я построю математическую (вероятностную) модель заточки и исследую ее. Надеюсь, эта статья кому-нибудь понравится и натолкнет на дальнейшие размышления. Итак, поехали.
Предположим, что некто кидает правильную монетку (вероятности выпадения орла и решки равны). И пусть подряд выпало 9 орлов. Верно ли,
что вероятность выпадения решки теперь больше, чем вероятность выпадения орла? Нет, не верно. Каждый раз вероятность выпадения орла и решки одна и та же и не зависит от прошлого. Более того, вероятности выпадения любой последовательности одинаковой длины совпадают. Для моделирования случайности в алгоритмах обычно используются генераторы псевдослучайных чисел (ГПСЧ) с источником энтропии. Причем, одно из основных требований к ним - адекватное моделирование независимости. Насколько мне известно, в perfect world используется довольно хороший ГПСЧ и каждый тик генерируется куча значений (наперед), и когда возникает необходимость смоделировать случай, то это число просто извлекается из этой общей кучи. То есть между кликами по кнопке "заточить" успевает проскользнуть много случайных чисел, так что даже если мы и знали бы значение очередного псевдослучайного числа, то смогли бы предсказать только следущее значение, которое давным давно уже исчезло из кучи. Таким образом, все попытки угадать рандом (например, с помощью комбинаций) можно считать пустой тратой времени.
Ошибка выжившего
Возьму описание из Википедии:
Цитата:
"Во Вторую мировую войну венгерскому математику Абрахаму Вальду, работавшему в нью-йоркской лаборатории SRG, поручили найти решение важной задачи. Не все американские бомбардировщики возвращались на базу. А на тех, что возвращались, оставалось множество пробоин от зениток и истребителей, но распределены они были неравномерно: больше всего на фюзеляже и прочих частях, меньше в топливной системе и намного меньше — в двигателе. Значило ли это, что в пробитых местах нужно больше брони? Вальд ответил: нет, исследование как раз показывает, что самолёт, получивший пробоины в данных местах, ещё может вернуться на базу. Самолёт, которому попали в двигатель или бензобак, выходит из строя и не возвращается. Поскольку попадания от вражеского огня на самом деле (в первом приближении) распределены равномерно, укреплять надо те места, которые у вернувшихся в массе наиболее «чистые».
Также известно расхожее мнение о доброте дельфинов, основанное на рассказах пловцов, которых животные толкали к берегу, но нет данных от тех, кто погиб в ходе столкновения.
Книги наподобие «Секреты успеха от Джона Смита» также страдают ошибкой выжившего: это значит лишь то, что дело Джона Смита не разорилось. Куда полезнее было бы узнать: а какие ошибки допустили разорившиеся конкуренты Смита?"
Как это связано с заточкой? А вот как. Наверняка, многие из вас читали в темах о заточке нечто вроде этого: "Мой способ работает, я заточил вещь на +11". И в каждой теме, в абсолютно разных способах все с пеной у рта доказывают свою правоту таким образом. Эти люди и есть "выжившие". Им повезло несколько раз. Но мы мало что знаем о тех, кто не смог заточиться таким образом. Часто люди склонны замечать в абсолютно случайных вещах какие-то закономерности (точиться лучше в какое-то время и чтобы рядом никого не было, нужно открыть и закрыть окно заточки, дождаться нужной комбинации и т. д.). Людям сложно признать, что некоторые вещи действительно случайны и ни от чего не зависят.
Как показывают результаты дизассемблирования сервера, заточка - дело совсем не хитрое. Есть фиксированные вероятности заточить с i до (i+1).
Их можно немного изменить, вставляя камни (небесные, подземные). Подземный камень, к тому же, при неудаче "сбрасывает" заточку на шаг назад, а не в нуль. Вот подробная таблица вероятностей заточки, которая взята с PWI. Да, мнения тех, кто говорит, что алгоритм меняется от версии к версии, тоже не подкреплены никакими фактами и противоречат исследованиям.
[Ссылки могут видеть только зарегистрированные пользователи. ]
Тот факт, что мы имеем дело с шансами заточки, позволяет нам использовать аппарат теории вероятностей: заточка представляет собой цепь Маркова.
Цепь Маркова
Грубо говоря, цепь Маркова - это случайная последовательность, в которой будущее значение зависит только от текущего значения и не зависит от прошлых. Можно считать, что у нас есть несколько состояний, и в каждый момент времени процесс переходит из текущего состояния в следующее с какой-то вероятностью. Цепь Маркова можно наглядно изобразить в виде графа, где вершины соответствуют состояниям. Состояние i соединяется с состоянием j, если вероятность перейти из i в j больше нуля. Для наглядности, на всех ребрах подпишем вероятности перехода.
В заточке в общем случае у нас 13 состояний (+0, +1, +2, ..., +12). Пусть мы хотим заточить вещь до +n. Наше состояние будет изменяться с каждым моментом времени (при нажатии на кнопку "заточить"). Когда мы заточим вещь до +n, то состояние уже меняться не будет, то есть вероятность перехода от +n к +n равна единице. Такие состояния называется поглощающими. Именно цепи Маркова с поглощающими состояниями проще всего исследовать. Цепь Маркова можно задать матрицей перехода.
У нас же ситуация куда интереснее. У нас доступны несколько альтернатив - на каждом шаге мы можем вставить какой-нибудь камень, либо не вставлять. Мы будем рассматривать только подземные и небесные камни. Каждому состоянию припишем камень, который нужно вставить (0 - ничего не вставляем, 1 - вставляем небеску, 2 - подземку). Как нетрудно заметить, у нас получается 3^12 = 531441 алгоритмов. Понятно, что алгоритм однозначно задается матрицей перехода. Но как нам их сравнивать, какой из них лучше, а какой хуже, и в каком смысле? Поставим себе цель минимизировать средние расходы на заточку. Есть несколько моделей среднего значения, а мы возьмем математическое ожидание (оно при большом количестве экспериментов по Закону больших чисел близко к среднему арифметическому). У каждого камня есть своя цена. Самый простой способ выбрать оптимальный алгоритм - перебрать все матрицы перехода, для каждой посчитать средние затраты и выбрать матрицу, при которой средние расходы меньше всего. Для того, чтобы посчитать средние затраты, нужно посчитать среднее число посещений данного состояния, умножить на стоимость соответствующих камней, а потом просуммировать по всем состояниям. Как посчитать среднее число посещений, смотри [Ссылки могут видеть только зарегистрированные пользователи. ].
Я написал несколько скриптов для GNU Octave (либо Matlab), которые вычисляют оптимальную стратегию. Вот такой вот результат:
оптимальная стратегия до +9 включительно: 0 0 0 0 1 1 2 2 2
среднее число "кликов" по кнопке: 6135
средние затраты на сервере "Гидра": 203 712 056 юаней
цена заточки на Гидре: 299 999 999
Следует отметить, что у затрат очень большая дисперсия, то есть кому-то может очень сильно повезти, а кому-то очень сильно не повезти, но в среднем будет вот такая вот стоимость. Кстати, когда люди говорят, что заточка не рандомна, потому, что иначе не заточишься - не верьте этому. Из-за большой дисперсии, тыкая рандомно, вполне может повезти. Скорее всего, разумные способы, которые вы сами придумаете, будут примерно с такими же средними затратами и такой же дисперсией.
Также, я написал программу для моделирования процесса заточки. Проводится много экспериментов, и считается выборочные мат. ожидание, медиана, стандартное отклонение, минимум и максимум. Исходные коды скриптов и программы во вложениях.
У заточки очень большая дисперсия, а значит большой риск. У некоторых людей наблюдается любовь к риску, а у некоторых, наоборот - отвращение. Можно попробовать ввести функцию полезности каждого конкретного человека и подстраивать оптимальную стратегию под него.
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
Последний раз редактировалось Poisson; 28.12.2017 в 03:33.
Причина: Обновил картинки
Хороший гайд, в свое время считал и точил так же и в день получал на выход несколько +10
Если будет интересно, могу поискать у себя логи по заточке, там несколько миллионов попыток, сделанных на руоффе
________________ TwinkDB - твинки любого игрока, их дата создания, последний онлайн, статус удаления и прочее
Skype - freepvps
ICQ - 412705115
[Ссылки могут видеть только зарегистрированные пользователи. ] - ставкобот [Ссылки могут видеть только зарегистрированные пользователи. ] - общение в КЧ через смартфон
вы неправильно преподносите информацию) вам надо эти логи соотнести ко времени / нипу / кол-ву персов рядом, и, основываясь на этих выборках, сделать свой 45-й точер.
для пви пользовал какой-то точер на autoit [Ссылки могут видеть только зарегистрированные пользователи. ] с elitepvpers
основная функция точеров, я думаю, это сохранение нервов игрока за счет его сбережений. либо один раз увидеть фейл и не пользоваться такими программами или, каждый раз сбивая точку (даже +3 и +4), обливать сердце кровью.
и вроде уже где-то было, когда программа-точер учится на in-situ (на месте) выборке, т.е. во время запуска и путем просмотра +-+-+. да, дорогой метод. но что, если его скрестить с тем, что говорит автор в начале темы. т.е. считать вероятности выпадения комбинаций с учетом значения заточки и камней. а уж сюда как раз будут включены народные переменные (где точиться, когда точиться, сколько рядом народу, китайский генератор рандома ит.п.)
или меня тоже манит на темную сторону оккультизма?
Еще не прочитал статью. Но всё хочу проверить, сработает ли "теория вероятности". Ищем 4-6 неудач подряд на левой шмотке, а потом подставляем небеску. Под словом "сработает", я имею ввиду шанс заточки камнем хотя бы выше 60%
Еще не прочитал статью. Но всё хочу проверить, сработает ли "теория вероятности". Ищем 4-6 неудач подряд на левой шмотке, а потом подставляем небеску. Под словом "сработает", я имею ввиду шанс заточки камнем хотя бы выше 60%
Советую вам все же прочитать статью и попытаться понять, а для лучшего понимания почитайте еще про [Ссылки могут видеть только зарегистрированные пользователи. ] и [Ссылки могут видеть только зарегистрированные пользователи. ].
Не совсем соглашусь с ошибкой выжившего. sabbaot01 в части правильно писал про время/нипа. В своё время пользовался программой с графиком, количеством + и - для наглядности. Но до построения полноценного графика не дошёл, была такая идея, можно подумать над её реализацией. Для своего описания заточки использую понятие цикла.
Не совсем соглашусь с ошибкой выжившего. sabbaot01 в части правильно писал про время/нипа. В своё время пользовался программой с графиком, количеством + и - для наглядности. Но до построения полноценного графика не дошёл, была такая идея, можно подумать над её реализацией. Для своего описания заточки использую понятие цикла.
Основная проблема здесь в том, что распределение количества нажатий на кнопку для достижения желаемого результата имеет тяжелые хвосты и, как следствие, большую дисперсию, поэтому если вы хотите формально проверить, есть ли влияние места/времени, можно сделать следующее.
1. Зафиксировать (Место1; Время1), (Место2; Время2).
2. Собрать большие выборки из количества нажатий для каждого места/времени при одних и тех же условиях.
3.Проверить гипотезу о значимом различии между выборками, то есть о том, что различие между выборками просто объясняется случайностью из-за дисперсии, а не чем-то другим (местом/временем). Для этого можно применить, например, [Ссылки могут видеть только зарегистрированные пользователи. ], либо двухвыборочный критерий Колмогорова-Смирнова.
P.S. Интересно, откуда взялось мнение, что на результат влияют место, время, количество игроков рядом, баффы, наличие пета... Из-за нестабильности результата, так как большая дисперсия?
Основная проблема здесь в том, что распределение количества нажатий на кнопку для достижения желаемого результата имеет тяжелые хвосты и, как следствие, большую дисперсию, поэтому если вы хотите формально проверить, есть ли влияние места/времени, можно сделать следующее.
1. Зафиксировать (Место1; Время1), (Место2; Время2).
2. Собрать большие выборки из количества нажатий для каждого места/времени при одних и тех же условиях.
3.Проверить гипотезу о значимом различии между выборками, то есть о том, что различие между выборками просто объясняется случайностью из-за дисперсии, а не чем-то другим (местом/временем). Для этого можно применить, например, [Ссылки могут видеть только зарегистрированные пользователи. ], либо двухвыборочный критерий Колмогорова-Смирнова.
P.S. Интересно, откуда взялось мнение, что на результат влияют место, время, количество игроков рядом, баффы, наличие пета... Из-за нестабильности результата, так как большая дисперсия?
Вторым пунктом я и занимался (примерно миллион кликов в минуту), это уже по экрану надо показывать. Мнение взялось не из-за нестабильности ,а из-за стабильности, в том числе на основе вышеупомянутого утверждения. Баффы, петы никак не влияют и на всю эту проверку ушло бы неисчислимое время , тогда как время и нпс это другое.
Вы можете миллион раз в минуту нажать на кнопку "заточить"? Мне казалось, что сервер проверяет это и не обрабатывает "левые" запросы.
Либо я вас не так понял, в таком случае, как вы собираете данные (что именно)?
Вы можете миллион раз в минуту нажать на кнопку "заточить"? Мне казалось, что сервер проверяет это и не обрабатывает "левые" запросы.
Либо я вас не так понял, в таком случае, как вы собираете данные (что именно)?
Программой собираю. вот цитата "Да, мнения тех, кто говорит, что алгоритм меняется от версии к версии, тоже не подкреплены никакими фактами и противоречат исследованиям." - а также есть симулятор, который применим, исходя, из данного текста. С ним и работаю. Ну и конечно же за 6 лет точения практически все версии офа использовал.
а также есть симулятор, который применим, исходя, из данного текста. С ним и работаю.
Исходя из текста, применима любая версия оффа (не только руоффа), фришки (если ядро не было модифицировано), симулятор заточки (если он использует тот же алгоритм, что и сервер). Какой симулятор вы используете?
Последний раз редактировалось Poisson; 26.12.2017 в 21:03.