 |
 |

20.06.2009, 01:02
|
Безликий Молчун
|
|
Регистрация: 29.05.2009
Сообщений: 9
|
|
Логика такая:
Пусть вероятность попадание за 1 ход есть А%, промаха - В%.
Первый ход: вероятность попадания - А%, промаха - В%.
Ход второй (сложнее). Если во время первого хода был промах, то во время второго хода будет 100% попадания. Если же во время первого ходя было попадание, то во время второго хода будет либо А% попадания, либо В% промаха.
В результате мы имеем:
Во время первого хода: попадание - А%, промах - В%
Во время второго хода: попадание - В% * 100% + А% * А%; промах - А%* В%.
Вероятность того, что произойдет два события одновременно (тут можно говорить последовательно) есть произведение вероятности первого и второго событий.
Чтобы в результате за два хода попаданий было 80% нужно чтобы: (вероятность попасть за первый ход) + (вероятность попасть за второй ход) = 2 * А%
Чтобы в результате за два хода промахов было 20% нужно чтобы: (вероятность промаха за первый ход) + (вероятность промаха за второй ход) = 2 * 20%
В итоге мы имеем следующую систему уравнений:
1. А% + (В%*100% + А%*А%) = 2* 80% (80% можно заменить на любое X%)
2. В% + А%*В% = 2* 20% (20% можно заменить на любое Y%)
Решая эту систему (выражая одно через другое) получится кубическое уравнение. Решение его можно, найдя численно, либо используя метод, описанный здесь: http://algolist.ru/maths/findroot/cubic.php.
Так как принципиально решение существует (в любом случае можно подобрать величины А% и В%, чтобы выполнялось условие в целом 80% попаданий и 20% промахов), то оно будет найдено.
Я смоделировал данную ситуацию в Excel: 1000 боев, каждый бой состоит из 12 шагов (то есть 12000 выстрелов). Я могу с уверенностью сказать, что решение существует.
Я использовал генератор случайных чисел (функция Rnd(1) в VBA). Алгоритм такой: при попадании числа в промежуток [0;0,245] получается промах, а в противном случае попадание. При описанном выше алгоритме суммарная вероятность попаданий получается около 80% (функция Rnd(1) не совершенна, поэтому получаются колебания).
Приложив немного усилий можно сделать зависимость: какая должна быть вероятность попадания за ход (А%), чтобы при описанном выше алгоритме в итоге получалось X% попаданий (20%, 21% 23% и так далее).
|

20.06.2009, 01:06
|
Безликий Молчун
|
|
Регистрация: 29.05.2009
Сообщений: 9
|
|
Чтобы в результате за два хода попаданий было 80% нужно чтобы: (вероятность попасть за первый ход) + (вероятность попасть за второй ход) = 2 * А%
очепятка - не 2 * А%, а 2 * 80%
|

20.06.2009, 01:23
|
Хранящий гармонию
|
|
Регистрация: 12.08.2008
Сообщений: 1,369
|
|
Цитата:
Сообщение от vyto
Логика такая:
Пусть вероятность попадание за 1 ход есть А%, промаха - В%.
Первый ход: вероятность попадания - А%, промаха - В%.
Ход второй (сложнее). Если во время первого хода был промах, то во время второго хода будет 100% попадания. Если же во время первого ходя было попадание, то во время второго хода будет либо А% попадания, либо В% промаха.
В результате мы имеем:
Во время первого хода: попадание - А%, промах - В%
Во время второго хода: попадание - В% * 100% + А% * А%; промах - А%* В%.
Вероятность того, что произойдет два события одновременно (тут можно говорить последовательно) есть произведение вероятности первого и второго событий.
Чтобы в результате за два хода попаданий было 80% нужно чтобы: (вероятность попасть за первый ход) + (вероятность попасть за второй ход) = 2 * А%
Чтобы в результате за два хода промахов было 20% нужно чтобы: (вероятность промаха за первый ход) + (вероятность промаха за второй ход) = 2 * 20%
В итоге мы имеем следующую систему уравнений:
1. А% + (В%*100% + А%*А%) = 2* 80% (80% можно заменить на любое X%)
2. В% + А%*В% = 2* 20% (20% можно заменить на любое Y%)
Решая эту систему (выражая одно через другое) получится кубическое уравнение. Решение его можно, найдя численно, либо используя метод, описанный здесь: http://algolist.ru/maths/findroot/cubic.php.
Так как принципиально решение существует (в любом случае можно подобрать величины А% и В%, чтобы выполнялось условие в целом 80% попаданий и 20% промахов), то оно будет найдено.
Я смоделировал данную ситуацию в Excel: 1000 боев, каждый бой состоит из 12 шагов (то есть 12000 выстрелов). Я могу с уверенностью сказать, что решение существует.
Я использовал генератор случайных чисел (функция Rnd(1) в VBA). Алгоритм такой: при попадании числа в промежуток [0;0,245] получается промах, а в противном случае попадание. При описанном выше алгоритме суммарная вероятность попаданий получается около 80% (функция Rnd(1) не совершенна, поэтому получаются колебания).
Приложив немного усилий можно сделать зависимость: какая должна быть вероятность попадания за ход (А%), чтобы при описанном выше алгоритме в итоге получалось X% попаданий (20%, 21% 23% и так далее).
|
слишком много буков и выражений,читаю в 1:18 ночи,поэтому сразу скажу по тому,что заметил сразу,остальное завтра разберу и покритикую(так как критиковать есть за что  )
Цитата:
При описанном выше алгоритме суммарная вероятность попаданий получается около 80% (функция Rnd(1) не совершенна, поэтому получаются колебания).
|
Вы колебания привести можете?
Почему вот народ не понимает того,что их замечания точности,а именно 65%,70% и т.д. в данный период и за данное кол-во боёв это не есть колебание на общем графики точности за полный период(чему равен полный период сказать не могу - я не админ,не знаю по какому периоду они рассматривали и ставили точность)?  При первой системе все рассчёты,приведённые на форуме(их собственно не так и много было,больше было нытья) все попадали в понятие колебание
но лично моё мнение,раз уж народ заговорил о колебании(что собственно очень важно в понимании вероятность на больших выборках) то колебания при нынешней системе очень сильные и сразу заметны,а колебания при старой системе средние и малые и постояны.
Про вашу систему(автора сообщения  ) напишу чуть позже,точнее часиков через 10,как проснусь)
А за ссыль на алгоритм решения куб.уравнения методом Виета-Кардано спасибо))сразу вспоминаются школьные времена,когда на олимпиадах попадается убийственное куб.уравнения  и почти все корни комплексные)
Последний раз редактировалось iliapl; 20.06.2009 в 01:26.
|

20.06.2009, 14:18
|
Безликий Молчун
|
|
Регистрация: 29.05.2009
Сообщений: 9
|
|
Если удары независимы друг от друга, то:
При больших выборках (12000 ударов) колебания, получаемые за счет несовершенства функции Rnd(1), в пределах 0,5 - 1%. То есть вероятность попасть колеблется от 79,5% до 80,5%. Не критично.
Но вот при малых выборках (12 ударов) колебания очень существенные. Количество промахов колеблется от 0 до 8. Причем у меня получается, что вероятность промазать более 3 раз порядка 20% (каждый пятый бой). Вероятность промазать более 4 раз около 8% (почти каждый десятый).
|

20.06.2009, 14:27
|
Безликий Молчун
|
|
Регистрация: 29.05.2009
Сообщений: 9
|
|
В целом же я думаю, что совершенствуя функцию Rnd и не накладывая дополнительные условия (например, ограничить количество промахов за 1 бой или сделать так, что после промаха будет 100% попадание), убрать большие колебания на малых выборках (12 ударов) вряд ли получится. В итоге будет получаться, что промахи ходят кучками, или, например, в одном бою было 2 промаха, а в следующем 5.
|

20.06.2009, 14:39
|
Хранящий гармонию
|
|
Регистрация: 12.08.2008
Сообщений: 1,369
|
|
Цитата:
Во время второго хода: попадание - В% * 100% + А% * А%; промах - А%* В%.
|
поясните эту строчку,я её вупор не понимаю 
|

20.06.2009, 14:40
|
Хранящий гармонию
|
|
Регистрация: 12.08.2008
Сообщений: 1,369
|
|
да и вообще,что то у вас как то не то в рассчётах и объяснениях,оибо вы объяснили так,что я понял совсем другое)
|

20.06.2009, 14:41
|
Хранящий гармонию
|
|
Регистрация: 12.08.2008
Сообщений: 1,369
|
|
и сразу эту строчку мне объясните,откуда она вообще взялась:
Цитата:
Чтобы в результате за два хода попаданий было 80% нужно чтобы: (вероятность попасть за первый ход) + (вероятность попасть за второй ход) = 2 * А%
Чтобы в результате за два хода промахов было 20% нужно чтобы: (вероятность промаха за первый ход) + (вероятность промаха за второй ход) = 2 * 20%
|
|

21.06.2009, 14:43
|
Безликий Молчун
|
|
Регистрация: 29.05.2009
Сообщений: 9
|
|
Приведу несколько другое объяснение (результат тот же, но рассуждения понятней).
Первый ход:
Вероятность попасть - А%
Вероятность промахнуться - В%
Второй ход:
Если за первый ход было попадание, то во втором ходу будет либо А% попадание, либо В% промах.
Если за первый ход был промах, то во втором ходу будет 100% попадание.
В результате за два хода есть три возможные комбинации:
Попал - Попал
Попал - Промахнулся
Промахнулся - Попал.
Считаем вероятности (чтобы понимать откуда берется умножение, читаем здесь: http://edu.ioffe.ru/register/?doc=efros/2.tex или смотрим гугл):
Попал - Попал: А%*А%
Попал - Промахнулся: А%*В%
Промахнулся - Попал: В%*100%
Сумма вероятностей должна быть 1. Если учесть условие, что А% + В% = 1, то А%*А% + А%*В% + В% = 1 (всегда).
Считаем количество попаданий за два хода:
Попал - Попал: 2
Попал - Промахнулся: 1
Промахнулся - Попал: 1
Считаем среднее (точнее это называется математическое ожидание, читаем здесь: http://www.cultinfo.ru/fulltext/1/001/008/074/335.htm):
2*А%*А% + 1*А%*В% + 1*В%
Нужно чтобы за два хода среднее количество попаданий было X% (например, 80%). Так как ходов было два, то среднее количество попаданий будет 2*X%. Приравниваем математическое ожидание и нужное среднее количество попаданий:
2*А%*А% + А%*В% + В% = 2*X%
Не забываем, что А% + В% = 1
Решая эту систему получаем: А% = КОРЕНЬ (2*X% - 1); В% = 1 - А%
Чтобы получить в среднем 80% попаданий, нужно чтобы А% было 77,45%.
В целом же этот алгоритм расчета работает для двух ходов. Для 12 ходов это некое приближение. Соответственно возникают погрешности 1 - 2%, если X% лежит в диапазоне 80% - 99%. В принципе на это можно не обращать внимание.
|

25.06.2009, 00:03
|
Безликий Молчун
|
|
Регистрация: 24.06.2009
Сообщений: 1
|
|
Эхх а какие были уравненные промахи в дисайблс ммм... там хилеры никогда не промахивались. шанспопадания ДЕЙСТВИТЕЛЬНО соответствовал процентам попадания, никогда не было 2 промаха подряд если шанс не 70% у призраков. все было хорошо просчитано, одним словом сказка. вам надо бы програмиста найти и попросить покапатся в игре и те промахи и попадиния которые в игре перевезти в "повелителей".
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +3, время: 01:39.
|
 |