Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

Архивировано

Эта тема находится в архиве и закрыта для публикации сообщений.

DracoLich

Псевдо-случайное распределение вероятности

Рекомендованные сообщения

Основы

 

Псевдо-случайное распределение (вероятности) (Pseudo Random (Probability) Distribution, PRD, ПСР(В)) относится к подсчетам вероятностей движком Warcraft III для некоторых способностей, основанных на шансе срабатывания, и влияющих на атаку. Вместо использования статичного процента, вероятность изначально установлена на небольшое начальное значение, затем повышающееся с каждой успешной атакой, на которой не сработал модификатор. Затем, когда модификатор успешно срабатывает, вероятность возвращается к начальному значению. Эта система не только предотвращает сверхчастые срабатывания модификатора, но и делает невозможным отсутствие модификатора вообще, т.к. со временем шанс достигает 100%, что ведет к срабатыванию модификатора на следующей успешной атаке. Следовательно, распределение модификатора атаки не полностью случайно, потому и называется псевдо-случайным распределением. В общем, все способности с шансом срабатывания округляются движком WC3 до ближайщих 5% из-за этой псевдо-случайности.

 

Псевдо-случайные способности

 

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

  • Критический удар (например, Phantom Assassin : Coup de grace, Crystalys)
  • Оглушающий удар (например, Void : Time Lock. После переделки, Cranium Basher не подлежит этому распределению.)
  • Сокрушающий удар (например, Infernal : Flaming Fists)
  • Orb of Slow (например, Maelstrom)
  • Hardened Skin (например, Stout Shield, Vanguard)

Механика распределения

 

Пример на Критическом ударе

 

Предположим, что шанс Критического удара - 20%. Если бы игра была полностью случайна, то для каждой атаки была бы вероятность 20%, что эта атака будет Критической, и не важно, сколько критических ударов было выполнено до этого. Простейший метод такой работы - генерация случайного числа от 1 до 100, и, если оно меньше или равно 20, то делать атаку Критической (так устроены все триггерные способности с шансом срабатывания). Но при этом, если брать всю игру в целом, примерный шанс срабатывания будет 20%, но ничто не помешает как бесконечной серии критических ударов подряд, так и вообще отсутствию их на протяжении всей игры, хотя шанс довольно высок. Для предотвращения таких вероятностей и балансировки случайности игры, разработчики Warcraft III и ввели ПСР.

 

Вместо 20% шанса на Критический удар при каждой атаке, первая атака имеет шанс на Критический удар 5.57% . Если он не сработал, то вторая атака уже будет иметь шанс 11.14%. Если срабатывания не было, то третий удар будет иметь вероятность 16.71% и т.д., добавляя 5.57% за каждый последовательный удар, на который не выпал Критический удар. Когда Критический удар срабатывает, шанс его для следующей атаки падает обратно, до 5.57%. Если брать игру в целом, количество Критических ударов, деленное на общее число ударов, дадут нам примерно 20%, но теперь невероятно трудно иметь серию последовательных Критических ударов, а отсутствие Критического удара просто невозможно, т.к. после 17 успешных атак, на которые он не сработал, 18 будет иметь 100.26% шанс срабатывания.

 

Формула вероятности

 

Для всех вышеупомянутых способностей, движок Warcraft III использует изначальное процентное значение, линейно увеличивающееся с каждой успешной атакой, на которую не сработал модификатор. Формула вероятности срабатывания модификатора:

P(N) = C * N

 

Где:

P(N) - процентная вероятность срабатывания модификатора на N-ой атаке, N - количество атак с последнего успешно сработавшего модификатора (минимальное значение 1)

C - константа, обеспечивающая начальное значение %, и его увеличение с каждым ударом.

 

Т.к. формула линейна, когда N достигает достаточно высокого значения, P(N) превысит 1, что гарантирует срабатывание модификатора на следующую атаку. Простейшая математика покажет, что это значение N равно 1 / C. Значение C зависит от вероятности, настроенной для навыка в World Editor, в дальнейшем эта вероятность будет значиться как P(E), ожидаемая вероятность.

 

Константы ПСР

P(E) - ожидаемая вероятность, C - константа, максимальное число атак без срабатывания модификатора - Макс. N, P(A) - "настоящая" вероятность.

 

Так, Критический Удар с вероятностью 45%, может не сработать 4 атаки подряд, но пятая будет с ним.

 

Таблица представляет теоритическое значение C для всех, кратных 5, процентных вероятностей, полученных с помощью числовых методов.

 

Эта теоретическая вероятность не совпадает с оригинальной Blizzard, что особенно заметно при больших вероятостях. Значения настоящей вероятности (P(A)) получены экспериментальным путем.

 

[glow=red,2,300]Константы вероятностей[/glow]

[table]

[tr]

[td]P(E) 

[/td][td]Теоретическая C 

[/td][td]Настоящая C 

[/td][td]Теор. макс. N 

[/td][td]Наст. макс. N 

[/td][td]P(A)

[/td][/tr]

[tr]

[td]5%

[/td][td]0.00380

[/td][td]0.00380

[/td][td]263

[/td][td]263

[/td][td]5%

[/td][/tr]

[tr]

[td]10%

[/td][td]0.01475

[/td][td]0.01475

[/td][td]67

[/td][td]67

[/td][td]10%

[/td][/tr]

[tr]

[td]15%

[/td][td]0.03222

[/td][td]0.03221

[/td][td]31

[/td][td]31

[/td][td]15%

[/td][/tr]

[tr]

[td]20%

[/td][td]0.05570

[/td][td]0.05570

[/td][td]17

[/td][td]17

[/td][td]20%

[/td][/tr]

[tr]

[td]25

[/td][td]0.08474

[/td][td]0.08475

[/td][td]11

[/td][td]11

[/td][td]24.9%

[/td][/tr]

[tr]

[td]30%

[/td][td]0.11895

[/td][td]0.11895

[/td][td]8

[/td][td]8

[/td][td]29.1%

[/td][/tr]

[tr]

[td]35%

[/td][td]0.15798

[/td][td]0.14628

[/td][td]6

[/td][td]6

[/td][td]33.6%

[/td][/tr]

[tr]

[td]40%

[/td][td]0.20155

[/td][td]0.18128

[/td][td]4

[/td][td]5

[/td][td]37.8%

[/td][/tr]

[tr]

[td]45%

[/td][td]0.24931

[/td][td]0.21867

[/td][td]4

[/td][td]4

[/td][td]41.6

[/td][/tr]

[tr]

[td]50%

[/td][td]0.30210

[/td][td]0.25701

[/td][td]3

[/td][td]3

[/td][td]45.7%

[/td][/tr]

[tr]

[td]55%

[/td][td]0.36040

[/td][td]0.29509

[/td][td]2

[/td][td]3

[/td][td]49.4%

[/td][/tr]

[tr]

[td]60%

[/td][td]0.42265

[/td][td]0.33324

[/td][td]2

[/td][td]3

[/td][td]53.0%

[/td][/tr]

[tr]

[td]65%

[/td][td]0.48113

[/td][td]0.38109

[/td][td]2

[/td][td]2

[/td][td]56.4%

[/td][/tr]

[tr]

[td]70%

[/td][td]0.57143

[/td][td]0.42448

[/td][td]1

[/td][td]2

[/td][td]60.1%

[/td][/tr]

[tr]

[td]75%

[/td][td]0.66667

[/td][td]0.46134

[/td][td]1

[/td][td]2

[/td][td]63.2%

[/td][/tr]

[tr]

[td]80%

[/td][td]0.75000

[/td][td]0.50276

[/td][td]1

[/td][td]1

[/td][td]66.7%

[/td][/tr]

[tr]

[td]85%

[/td][td]0.82353

[/td][td]0.57910

[/td][td]1

[/td][td]1

[/td][td]70.3%

[/td][/tr]

[tr]

[td]90%

[/td][td]0.88889

[/td][td]0.67068

[/td][td]1

[/td][td]1

[/td][td]75.0%

[/td][/tr]

[tr]

[td]95%

[/td][td]0.94737

[/td][td]0.77041

[/td][td]1

[/td][td]1

[/td][td]81.3%

[/td][/tr][/table]

[table][tr]

[td][/td]

[/tr]

[/table]

 

Согласно таблице, настоящие и теоретические значения C примерно одинаковы до 30%, но потом начинают резко расходиться. Другими словами, настоящая вероятность модификатора заметно ниже, чем ожидаемая вероятность.

 

Вероятностная погрешность

 

Очевидно, что общая вероятность модификатора должна быть максимально близка к P(E). Другими словами, после бесконечной серии атак, количество модификаторов, деленное на количество атак, должно быть точно равно P(E). Однако, ПСР приводит к другому значению, меньшему, чем P(E). Разница незаметна при низкой P(E), различаются на почти 1% при P(E) = 30%, и резко расходятся при больших вероятностях: ожидаемые 80% фактически являются 66.7%. Эта ошибка обусловлена двумя факторами:

 

1. Округление C. Без бесконечного числа знаков после запятой у C теоретически невозможно сделать линейную формулу для точной модели случайного распределения указанного P(E). Простые расчеты C требуют заметных временных затрат компьютерного времени, подразумевая, что тот должен составить целое вероятностное распределение для единственной константы. Поэтому все навыки, указанные выше, округляются до ближайщих 5%: вместо динамических подсчетов константы C, которые заняли бы очень много ресурсов CPU при каждой атаке, разработчики создали постоянную таблицу значений C для 5%, 10%, 15%, ...95%, которые потом подставлялись в формулу для определения P(N). Округление этих заданных значений и приводит к погрешности между P(N) и P(E). Этот эффект должен быть чрезвычайно мал для высоких значений C, однако, это не объясняет такой разницы в значениях при высоких P(E).

 

2. Значения P(E) из Развития (Ladder, ладдер). Blizzard затачивали Warcraft для игры на развитие, а не других видов карт, и наибольшая вероятность P(E) в ладдере - баш Mountain King, с шансом 40% (thx 2 111112 за поправку  :buba: ). Вряд ли является совпадением, что серьезная ошибка в P(E) начинает становиться заметной именно с этого места. Когда Blizzard ввели ПСР, они, возможно, подсчитали только те значения C, которые использовали в игре сами, а остальные значения были просто оценены на основаниях предыдущих результатов (например, с помощью экспоненциальной кривой). Видимо, они не стали проверять, как на самом деле сработают значения, что и привело к текущей ситуации.

 

Практическое использование

 

Счетчик атак

 

Счетчик атак N - целое число, относящееся к ПСР, но его механика описана не до конца. Большая часть описанных деталей является результатом наблюдений и здравого смысла, потому что никто не знает, как именно Blizzard реализовали ПСР.

 

Счетчик не увеличивается при атаке существа, к которому модификатор не может быть применен. Так, атака вражеских зданий не увеличит шанс выпадение Критического удара или Оглушающего удара при последующей атаке вражеских существ. Счетчик также не увеличивается, если герой промахивается из-за уклонения, разницы высот или отрицательных эффектов вроде Drunken Haze. Атаки, "отклоненные" триггерными лечениями, все равно являются атаками, и пополняют счетчик.

 

 

Способности, основанные на Orb of Slow (Maelstrom, Mjollnir, Spirit bear уровня 3 и 4 - Entangle), продложают накапливать счетчик, даже если способность перезаряжается. Это значит, что атаки, произведенные Spirit Bear во время перезарядки Entangle, существенно повысят шанс выпадения после окончания перезарядки.

 

Каждый псведо-случайный навык имеет свой счетчик, даже если несколько навыков одного типа находятся у одного героя. Если несколько навыков срабатывают в одно время, какой-то будет перекрыт другим, но счетчики обоих станут равны начальному значению. Например, если у героя два навыка Критического Удара. К сведению, Иллюзии имеют свой счетчик атак для псевдо-случайных навыков, наследованных от оригинала.

Применение

 

ПСР серьезно влияет на процесс игры, делая также возможным его использование в пользу игрока. Герой с Критическим ударом может сражаться против крипов, пока не произойдет длинной цепочки не-критических ударов, а затем идти в бой, с заметно увеличенным шансом на критический удар с первой атаки. Такая тактика, если не брать в расчет время на подготовку, может неплохо увеличить DPS героя в битве. Герои с родными навыки на Оглушающий удар так же могут сделать цепочку не-оглушающих ударов, чтобы максимализировать свой шанс на Оглушение в бою (помните, что Cranium Basher подчиняется не псевдо-случаному, а просто случайному распределению). Кроме того, шанс последовательных оглушений, благодаря ПСР, делает возможным пермо-оглушение, или обеспечивает просто хорошую частоту срабатываний. Поэтому, предметы на скорость атаки серьезно важны для таких героев, и особенно - для Lone Druid - Spirit Bear, из-за вышеописанных деталей.

 

Заключение

 

Псевдо-случайное распределение - встроенная особенность движка Warcraft III, защищающая множество способностей с шансом срабатывания от слишком частого или слишком редкого срабатывания. Благодаря этой системе, игрока гарантированно получат модификатор (например, Критический удар, блок урона, оглушающий удар и т.п.) после некоторого количества атак. Каждый раз, когда атака успешно завершается (против допустимой цели, притом попав в нее), и модификатор не срабатывает, шанс его срабатывания в будущем линейно увеличивается. При срабатывании модификатора, шанс падает до изначального, низкого, значения. В результате, модификаторы срабатывают не подряд, и с более размеренным интервалом. Из-за программных решений Blizzard, модификаторы, подчиняющиеся ПСР, с шансом срабатывания выше 30%, срабатывают реже, чем должны. ПСР не влияет на Уклонения или триггерные навыки, вроде Multi Cast и Backtrack.


если бы ты постил свои посты на спец форумах по исследованию дегенератов, где за каждый дегенеративный пост платят 1 цент, ты бы уже был в десятке форбс

Поделиться сообщением


Ссылка на сообщение

забил первый пост офк


если бы ты постил свои посты на спец форумах по исследованию дегенератов, где за каждый дегенеративный пост платят 1 цент, ты бы уже был в десятке форбс

Поделиться сообщением


Ссылка на сообщение

нужно открывать покеррум на движке варкрафта

Поделиться сообщением


Ссылка на сообщение
Гость EvilArthas

Знал это 4 года назад, развёл помню какого то лоха на пд, типа спорим я с двух ударов леориком полюбому тя критану :buba:

Пошол раскрутился на крипах и с уверенностью что скорее всего ща уже точно крит пошол ебанул ему хахаха с первого ваще удара :subj:

Поделиться сообщением


Ссылка на сообщение

Знал это 4 года назад, развёл помню какого то лоха на пд, типа спорим я с двух ударов леориком полюбому тя критану :buba:

Пошол раскрутился на крипах и с уверенностью что скорее всего ща уже точно крит пошол ебанул ему хахаха с первого ваще удара :subj:

 

Помню этот топик :)

Поделиться сообщением


Ссылка на сообщение

GJ

Грамматика и орфография местами страдают. :buba:


Поделиться сообщением


Ссылка на сообщение
Гость EvilArthas

Знал это 4 года назад, развёл помню какого то лоха на пд, типа спорим я с двух ударов леориком полюбому тя критану :buba:

Пошол раскрутился на крипах и с уверенностью что скорее всего ща уже точно крит пошол ебанул ему хахаха с первого ваще удара :subj:

 

Помню этот топик :)

 

Кстати этим лохом был вроде сухарик.

Там был какой то очередной по моему хейтерский топик обо мне типа какой же хуёвый я юзер, а я недавно в лотерею дохуя поднял и сочно на полутроллях в топике ебашился и такой загоняю А ДАВАЙ ТИПА ЩА Я ДОКАЖУ ЧТО Я УБЕР-ЛАКЕР, А ОН ТАКОЙ НЕТ НЕ ДОКАЖЕШ И МЫ ПОСПОРИЛИ ТО ЛИ НА ЛОХА ТО ЛИ НА ПИДОРА ЧОТ ТАКОЕ ВООБЩЕМ БЫЛО ВЕСЕЛО КОРОЧЕ 3137Vp7R.gif

Поделиться сообщением


Ссылка на сообщение
Гость offkey

Как этим пользоваться??

Поделиться сообщением


Ссылка на сообщение

Ни хуя себе у меня там RAMPAGE вышел.


Поделиться сообщением


Ссылка на сообщение
Гость BTEDD

вот это интересно

Поделиться сообщением


Ссылка на сообщение

АВТОРУ МОЛЮСЬ Я

НЕ ЛИМОНИЛ

просто инфа очень интересная, спасибо


]transcend.png

:manipulator_zhizney:

Поделиться сообщением


Ссылка на сообщение

а креветка искал какую статью написать вот же

Поделиться сообщением


Ссылка на сообщение

спасибо, понравилась статья!

 

Драколич, а может ли зависеть этот модификатор от слота в котором например лежит маелстром? :buba: слыхал про такой баг - может это просто суеверие - всегда кладу такие артефакты как можно выше и левее))


hs228.png
PROFIT Velen

1jYI7i0.jpg

 

There is a rainbow in the sky

sun.gif     rainbowsmile.gif

Поделиться сообщением


Ссылка на сообщение

ух вот это пушка, закрепляйте


 

10.gif

 

 

alison-brie_00310139.jpg

 

Поделиться сообщением


Ссылка на сообщение

А что с войдом? =)

а войд в 6 слотов не контрицца

Поделиться сообщением


Ссылка на сообщение

помню у близард была вакансия программист математик требование: профилированный на псевдослучайные числа


 

псс..иди сюда

06_tumblr_mm4bu9RaCj1rf8uhqo1_400.gif

 

 

k26Freak

5357211.jpg

 

 

.

 

 

Поделиться сообщением


Ссылка на сообщение

Самое лучшие 20% = случайное число из 5 чисел каждый удар.

Имеется 5 чисел от 1 до 5.

Каждую атаку героя происходит действие:

Генерируется нужное число, которое даст знать, чтобы способность сработала.

Происходит расчёт чисел и выбирается случайное число.

Сравнение того числа, которое было сгенерировано, с тем, что было выбрано при расчёте чисел.

Если произошло совпадение этих чисел, то срабатывает способность.

 

Напишите, если не поняли.

Старался для вас.


moonfangtopich написал 29.08.2019 в 14:57:
У вас недостаточно широкий кругозор, пацаны

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

Поделиться сообщением


Ссылка на сообщение

помню у близард была вакансия программист математик требование: профилированный на псевдослучайные числа

помню мне Стив Джобс звонил и говорит что есть вакансия управляющего Епл.

Я отказался. Слишком мелко.

Поделиться сообщением


Ссылка на сообщение

×
×
  • Создать...