Inev1table Опубликовано 28 февраля, 2023 Поделиться Опубликовано 28 февраля, 2023 Мне было очень интересно смоделировать заточку оружия в л2 и попробовать ответить на несколько вопросов: Сколько скроллов нужно потратить для того чтобы заточить оружие на +16 Сколько это будет стоить Сколько нужно раз в среднем "точить" оружие для того чтобы получить желаемый результат. Также, эту модель можно использовать для того чтобы понять адекватную наценку на искомое тобой оружие. Понятное дело что есть уникальные вещи, присутствующие на рынке в единственном экземпляре, какие-нибудь там топ Ы копья +16, где само копье только и падает что с антараса/валакаса с не стопроцентным шансом, но все равно, именно наценку НА ЗАТОЧКУ с помощью выведенной мной формулы можно вывести. Формулу в принципе можно написать на любом языке программирования (только на жс не стоит переносить, там математика бывает непредсказуемой), но я написал ее на пхп, так наибольший круг людей сможет ее прочитать, и, если я что-то упустил подправить. Собственно, сама формула: Spoiler <?php // Цена обычной заточки нужного грейда, в миллионах адены $sco_price = 10; // Цена блесс заточки нужного грейда, в миллионах адены $scb_price = 250; // Нужный нам уровень зачарования $max_e = 16; function oneSuccess($max_e, $sco_price, $scb_price) { $e = 0; $scb = 0; $sco = 0; $attempts = 0; $failures = 0; do { $attempts += 1; if ($e <= 3) { $sco += 1; $e += 1; } else { $scb += 1; $prob = mt_rand(0, 99); if ($prob <= 66) { $e += 1; } else { $failures += 1; $e = 0; } } } while ($e < $max_e); $overall = ($sco * $sco_price) + ($scb * 250); return [ 'scb' => $scb, 'sco' => $sco, 'attempts' => $attempts, 'overall' => $overall, 'failures' => $failures ]; } $max = 100000; $scb = 0; $sco = 0; $attempts = 0; $overall = 0; $failures = 0; $max_c = [ 'scb' => 0, 'sco' => 0, 'attempts' => 0, 'overall' => 0, 'failures' => 0 ]; foreach (range(0, $max) as $succ){ $new_success = oneSuccess($max_e, $sco_price, $scb_price); if ($new_success['scb'] > $max_c['scb']){ $max_c['scb'] = $new_success['scb']; } $scb += $new_success['scb']; if ($new_success['sco'] > $max_c['sco']){ $max_c['sco'] = $new_success['sco']; } $sco += $new_success['sco']; if ($new_success['attempts'] > $max_c['attempts']){ $max_c['attempts'] = $new_success['attempts']; } $attempts += $new_success['attempts']; if ($new_success['overall'] > $max_c['overall']){ $max_c['overall'] = $new_success['overall']; } $overall += $new_success['overall']; if ($new_success['failures'] > $max_c['failures']){ $max_c['failures'] = $new_success['failures']; } $failures += $new_success['failures']; } $average_scb = $scb/$max; $average_sco = $sco/$max; $average_attempts = $attempts/$max; $average_overall = $overall/$max; $average_failures = $failures/$max; print("average_scb: $average_scb, average_sco: $average_sco, average_attempts: $average_attempts, average_overall: $average_overall, average failures: $average_failures,"); print("\n max: \n"); print_r($max_c); Для того чтобы воспользоваться формулой в своих целях можете скопировать ее из поста, перейти например на https://onlinephp.io/ и вставить в окошко написанный мной код. Основные константы вынесены в самое начало файла. Если вам нужно посчитать не Ы грейд оружие, а, скажем, б грейд, но которое вы тоже планируете затачивать блесками (рарные/топовые в своем грейде пушки) измените значение $scb и $sco на подходящие для вашего таргетного грейда. Если вам интересно поиграть и понять сколько будет стоить в среднем заточка не на 16 а скажем 15 или и того меньше Spoiler Отличие обратно пропорционально шансу. Так как заточка с n на n+1 66%, то каждое уменьшение на 1 будет стоить вам в среднем на 30% дешевле. Для примера - на ста тысячах смоделированных попыток заточка на +16 стоит около 97 миллиардов адены (В СРЕДНЕМ) Максимальное (самое невезучее из этих ста тысяч попыток) потратило 1234410 (один триллион, двести тридцать четыре миллиарда, четыреста десять миллионов) При уменьшении таргетируемой заточки до 15: Среднее значение потраченной адены приходит к шестидесяти четырем миллиардам, но самое невезучее все также тратит около триллиона адены Как выглядит получаемый ответ Spoiler average_scb: 368.97163, average_sco: 491.1196, average_attempts: 860.09123, average_overall: 97154.1035, average failures: 121.77989, max: Array ( [scb] => 4656 [sco] => 6320 [attempts] => 10976 [overall] => 1227200 [failures] => 1579 ) В выкладываемой версии скрипта количество удачных экспериментов для подсчета снижено до десяти тысяч, публичные интерпретаторы не ходят долго думать над вашими задачками. Если у вас есть свой интерпретатор на компе - можете изменить значение на 36-й строке и просто добавить нолик. Урезанная версия которую можно использовать для вычисления значения без блессок, чисто скроллы горят ну и оружие, конечно: Spoiler <?php // Цена обычной заточки нужного грейда, в миллионах адены $sco_price = 10; // Нужный нам уровень зачарования $max_e = 16; function oneSuccess($max_e, $sco_price) { $e = 0; $failures = 0; $sco = 0; do { if ($e <= 3) { $sco += 1; $e += 1; } else { $sco += 1; $prob = mt_rand(0, 99); if ($prob <= 66) { $e += 1; } else { $e = 0; $failures += 1; } } } while ($e < $max_e); $overall = ($sco * $sco_price); return [ 'sco' => $sco, 'overall' => $overall, 'failures' => $failures ]; } $max = 100000; $sco = 0; $overall = 0; $failures = 0; $max_c = [ 'sco' => 0, 'overall' => 0, 'failures' => 0 ]; foreach (range(0, $max) as $succ){ $new_success = oneSuccess($max_e, $sco_price); $sco += $new_success['sco']; if ($new_success['sco'] > $max_c['sco']){ $max_c['sco'] = $new_success['sco']; } $failures += $new_success['failures']; if ($new_success['failures'] > $max_c['failures']){ $max_c['failures'] = $new_success['failures']; } $attempts += $new_success['attempts']; if ($new_success['overall'] > $max_c['overall']){ $max_c['overall'] = $new_success['overall']; } $overall += $new_success['overall']; } $average_sco = $sco/$max; $average_overall = $overall/$max; $average_failures = $failures/$max; print("average_sco: $average_sco, average_overall $average_overall, average failures: $average_failures"); print("\n max: \n"); print_r($max_c); Могу сделать тоже самое для брони, если вы попросите. Безусловно это не панацея. Пареньку или девушке у которой вы покупаете заточенную пушку могло очень не повезти при заточке, и он(а) могли быть самыми невезучими на свете, и потратить целый триллион на заточку до 16-ти. Но среднее по больнице статистическое значение более или менее справедливой наценки на заточку с помощью этих формул высчитать удастся. Для разных грейдов и стоимостей заточек. 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Blake Опубликовано 28 февраля, 2023 Поделиться Опубликовано 28 февраля, 2023 Даже лень читать. По названию темы - бред. Подобное интересовало в году так 2011. 3 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
МИ6 Опубликовано 28 февраля, 2023 Поделиться Опубликовано 28 февраля, 2023 (изменено) https://forum.asterios.tm/topic/499995-шанс-заточки-упал/#comment-7932996 Изменено 28 февраля, 2023 пользователем фонАйнцберн 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Inev1table Опубликовано 28 февраля, 2023 Автор Поделиться Опубликовано 28 февраля, 2023 2 hours ago, фонАйнцберн said: https://forum.asterios.tm/topic/499995-шанс-заточки-упал/#comment-7932996 Так я и считал по 66% 2 hours ago, Blake said: Даже лень читать. По названию темы - бред. Подобное интересовало в году так 2011. Тогда зачем ты это высрал? Я написал это и сделал для того чтобы поделиться с теми кому так же как и мне может быть интересно, но не могут или лень посчитать формулой. 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Pupka Опубликовано 28 февраля, 2023 Поделиться Опубликовано 28 февраля, 2023 Лайк за старания) 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Seiso Опубликовано 28 февраля, 2023 Поделиться Опубликовано 28 февраля, 2023 (изменено) Была мысля как-то использовать формулу бернулли или биноминальный коэффициент для подсчета удачных заточек, чтоб вывести статистику, но стало лень в итоге тыкать 1000 шмоток для таких целей Изменено 28 февраля, 2023 пользователем Seiso 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Челси Опубликовано 28 февраля, 2023 Поделиться Опубликовано 28 февраля, 2023 Спасибо большое 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
diesIrae Опубликовано 28 февраля, 2023 Поделиться Опубликовано 28 февраля, 2023 Не могу сказать точно, но челы которые копались в серверном коде слитой ПТСки говорили про странную оптимизацию древних времён. Суть её в том, что специфика функций генерации рандомного значения конкретно в плюсах (и принцип генерации рандомного числа в принципе) обходятся хаком пакетной записи в темп бд. Т.е. вместо того, чтобы внутри каждого шансового события вызывать функцию генерации рандомного числа с передачей в неё параметра успеха, вызывается функция чтения готового результата определённой категории (например, 66%). Т.е., клиент (или бд) заранее готовит пачки результатов по n штук в категории определённой вероятности события. А все события, которые затрагивают эту вероятность не считают её сами, а читают последний свободный результат. Типа, раза три сгенерировали true/false по вероятности 66% по 100 штук. Получили id in [0 .. 99] => true id in [100 ..199] => false id in [200 .. 299] => true Дальше все события, у которых вероятность успеха 66%, читают строки через id++, и используют предзаписанный результат. Среди таких событий может оказаться как заточка пухи, так и проверка прохождения дебафа на моба, чей шанс насчитался в 66%. Такая котоламповая история, в принципе, неплохо вписывается в проблемы rand() с одной стороны, и так называемые "волны заточки", наблюдаемые эмпирически. И ещё она объясняет почему математика не работает на шансы заточки. зы, это касательно ПТС реализации. Как оно в астеровской реализации на джаве знает только админ :) Учитывая времена, процесс вполне мог быть немного оптимизирован в сторону микросервисного подхода. 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
6eJlkaЮля Опубликовано 1 марта, 2023 Поделиться Опубликовано 1 марта, 2023 Зачем всё это? Тупо корейский рандом, покупаем пухи/шмом и точим точим точим! 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
GoGaFuNPlaY Опубликовано 1 марта, 2023 Поделиться Опубликовано 1 марта, 2023 Ну как бы не 66% а меньше.Прикинь😁 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
МИ6 Опубликовано 1 марта, 2023 Поделиться Опубликовано 1 марта, 2023 49 минут назад, GoGaFuNPlaY сказал: Ну как бы не 66% а меньше.Прикинь😁 https://forum.asterios.tm/topic/1918-jeto-ne-bagi-jeto-fichi/#comment-2711729 не нужно ничего прикидывать 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
СенЖермен Опубликовано 1 марта, 2023 Поделиться Опубликовано 1 марта, 2023 Я легенда! Я все знаю! Чтобы заточить пуху на +16, надо 16 скроллов, а это 160кк примерно) 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
vasia777 Опубликовано 1 марта, 2023 Поделиться Опубликовано 1 марта, 2023 Эта формула чистая абстракция-как тот сферический конь в вакууме. К реальности она не имеет никакого отношения. Если вам нужна точеная пушка-то ее нужно просто купить-а если хотите точить сами-то покупаем где-то 150 пушек и по 7 заточек на пушку. Логика подсказывает что уже точеная пушка на рынке будет дешевле чем 150 неточеных. А если вы вычислите по этой формуле что вам надо вот столько пушек и все их сломаете- то вам будет служить утешением что шанс сломать все эти пушки был очень маленький. Значит вам повезло. 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Rankars Опубликовано 30 августа Поделиться Опубликовано 30 августа 28.02.2023 в 14:43, МИ6 сказал: https://forum.asterios.tm/topic/499995-шанс-заточки-упал/#comment-7932996 Да да верим в 66:) адепты 66% заточки не месте?) из 20 ССок на 4 зашло 4 4 из 20 ? 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Ctulhu Опубликовано 30 августа Поделиться Опубликовано 30 августа Всё что связано с заточкой это колдунство 🧙 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
tosser Опубликовано 30 августа Поделиться Опубликовано 30 августа 3 часа назад, Rankars сказал: ... 4 из 20 ? Статистика познаётся на больших числах. 20 пух это статистическая ничтожность, всё равно что пару раз монетку бросить и заявлять о шансах. Купи 200 пух, а лучше 2000, вот тогда можно говорить о процентах и шансах. 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
diesIrae Опубликовано 30 августа Поделиться Опубликовано 30 августа 10 часов назад, tosser сказал: Купи 200 пух, а лучше 2000, вот тогда можно говорить о процентах и шансах. Неа. Рандомайзер-то общий на сервер. Статистически он выдаст тру в 66% вызовов. Что никак не помешает кому-то несчастному стабильно попадать в 34% фолс всеми своими 2000 пухами. Заур недавно точил тысячу с хвостиком пух и получил 1 на 16. Что, в принципе, хреновенько при математической вероятности успеха 1 к 766. С другой стороны, на 15 у него зашло 4 пухи, при вероятности 1/460. Т.е. на этом этапе ему "повезло" почти в два раза выше номинала) 13 часов назад, Ctulhu сказал: Всё что связано с заточкой это колдунство 🧙 Всё просто, для успешной заточки вам потребуется простое, советское Скрытый текст МАССОВОЕ ЖЕРТВОПРИНОЩЕНИЕ ВО СЛВАУ БОГОВ ХАСОА! 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
etof1shka Опубликовано 31 августа Поделиться Опубликовано 31 августа На ютубе есть видео про шанс заточки и как он сделан в л2, там не только про заточка но и про рулетку и про шансы критов и про шансы спойла. Воьщем 50 60% это не те что высчитываются математикой типа если 50% то каждая 2я точится. Там какой-то скриптовый рандом, что идёт сериями сначала удачи потом неудачи, если попадаешь в серию "удач" То точится,часто, например 7раз из 10, если наоборот, в серию неудач, то в ней чаще неудачи и НЕ точится 7 из 10ти. Потому наверное и в видео разных про рулетку челу то везёт постоянно он миллиард за миллиардом прдымает, клацая нонстоп по 2 3 раза угадывает число за 20сек, то ждёт и больше 100фейлов подряд. Та и точка тоже так же 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
diesIrae Опубликовано 31 августа Поделиться Опубликовано 31 августа 4 часа назад, etof1shka сказал: Воьщем 50 60% это не те что высчитываются математикой типа если 50% то каждая 2я точится. Там какой-то скриптовый рандом, что идёт сериями сначала удачи потом неудачи, если попадаешь в серию "удач" То точится,часто, например 7раз из 10, если наоборот, в серию неудач, то в ней чаще неудачи и НЕ точится 7 из 10ти. Это сильно зависит от серверных оптимизаций сервера. У каждого приличного проекта она своя. Как я понимаю, там смотрели слитые исходники. И прогеры нисисофта решили не парится и тупо предзаписывали результат в БД с множественным повтором. Чтобы вместо вызова функции рандомайзера вызывать простое сравнение. Типа, рандомайзер выдал 33, 66, 89. А в предзапись попало: 33, 33, 33, 33, 66, 66, 66, 89, 89, 89 (ну или с доп хитростью в лице индивидуального модификатора, а-ля делим результат на х, результат записываем в количестве равно второму знаку после запятой). А т.к. таблица общая, то её задействуют и запросы на точку, и запросы на расчёт дебафов. Таким образом уловить последовательность невозможно. Для этого нужно быть одним на сервере. 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Katamaranov Опубликовано 1 сентября Поделиться Опубликовано 1 сентября (изменено) 19 часов назад, etof1shka сказал: Там какой-то скриптовый рандом, что идёт сериями сначала удачи потом неудачи Причем насколько я помню суть этого фундаментального довольно видоса, эти серии распространяются не только на заточку, но они связаны вообще с огромным количеством действий на сервере: критами от ударов, броском кубика и др. Т.е. это очень длинная вероятностная шкала, которую постоянно перебивают другие игроки что-то делая ежесекундно и высчитать такой псевдорандом невозможно. Ed: "DiesIrae опередил, не заметил) Изменено 1 сентября пользователем Katamaranov 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
tosser Опубликовано 2 сентября Поделиться Опубликовано 2 сентября В 31.08.2024 в 02:27, diesIrae сказал: Неа. Рандомайзер-то общий на сервер. Статистически он выдаст тру в 66% вызовов. Что никак не помешает кому-то несчастному стабильно попадать в 34% фолс всеми своими 2000 пухами. Заур недавно точил тысячу с хвостиком пух и получил 1 на 16. Что, в принципе, хреновенько при математической вероятности успеха 1 к 766. С другой стороны, на 15 у него зашло 4 пухи, при вероятности 1/460. Т.е. на этом этапе ему "повезло" почти в два раза выше номинала) Всё просто, для успешной заточки вам потребуется простое, советское Показать контент МАССОВОЕ ЖЕРТВОПРИНОЩЕНИЕ ВО СЛВАУ БОГОВ ХАСОА! В прошлом году я точил ~20 топ Ц пик, лесенкой, две из них последовательно зашли на 16. И всё же рандомайзер здесь не при чём, он генерит однажды на перезапуск сервера, да. Ходит по кругу, да. Но количество сгенерённых значений велико и выборка идёт на любое событие, которое обращается к генератору, поэтому предсказать невозможно, и именно поэтому на больших числах всё усредняется в ростом количества попыток и в итоге выходит на заданные рандомайзеру параметры, т. е. в те самые 66%. 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
РонялПАти Опубликовано 2 сентября Поделиться Опубликовано 2 сентября От 300 до 1000, как показал недавний стрим 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
MadeInUkraine Опубликовано 2 сентября Поделиться Опубликовано 2 сентября (изменено) Когда вы это считаете важно понимать что вы считаете и получаете в итоге обычно считают вероятность N событий подряд (т.е. +4 +5 +6..., +16 необходимо 13 успешных заточек подряд) а это значит что полученный результат не сильно поможет при заточке "лесенкой", т.к. даже если у вас получится что для 13 успешных заточек подряд вам необходимо 500 пушек, это значит что у вас будет цепочка удачных заточек в количества 13 штук (т.е. вы точнее 13 пушек на +1 заточку без сломов при заточке лесенкой), но это ничего общего с получением оружия +16 не имеет (для данного типа заточки) Изменено 2 сентября пользователем MadeInUkraine 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
tosser Опубликовано 3 сентября Поделиться Опубликовано 3 сентября Грубо говоря считаем что шанс 66% это приблизительно (округляя до целых пух) 1 из 2 заточится. Тогда для +4 нужно 2 пухи, для +5 нужно 4 пухи и так далее. Путём вычисления несложной прогрессии получаем, что для гарантированной заточки на +16 необходимо 4096 пух. Естественно это число может быть и меньше, вплоть до того, что каждая итерация будет успешной, тогда нужна всего 1 пуха. Итого ответ: нужно от 1 до 4096 пух. 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
skazka001 Опубликовано 3 сентября Поделиться Опубликовано 3 сентября Общий генератор чисел для всех событий подразумевает, что числа для верификации события будут вытаскиваться из пачки, от сюда и волны, что из 10 пух ни одна на 6 не зайдет, или скил с шансом 80% 3-4 раза не заходит подряд. 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.