Столкнулся с задачей - условно есть 2 шеренги стрелков, одна из них атакующая, вторая оборонительная. Атакующая производит залп.
Задача: определить процент попадания Атакующих солдат по 1, 2, 3, ... раз по 1 воину обороны.
попадание атакующих солдат 100%.
пример 1:
атакующих 2000
оборонительных 2000
распределение:
попаданий|количество атакующих|процент от общего числа атакующих
1 |797 |0,3985
2 |722 |0,361
3 |348 |0,174
4 |108 |0,054
5 |25 |0,0125
Сумма |2000
пример 2:
атакующих 1000
оборонительных 2000
распределение:
попаданий|количество атакующих|процент от общего числа атакующих
1 |591 |0,591
2 |306 |0,306
3 |84 |0,084
4 |4 |0,004
5 |15 |0,015
Сумма 1000
пример 3:
атакующих 2000
оборонительных 1000
распределение:
попаданий|количество атакующих|процент от общего числа атакующих
1 |258 |0,129
2 |538 |0,269
3 |546 |0,273
4 |396 |0,198
5 |180 |0,09
6 |60 |0,03
7 |14 |0,007
8 |8 |0,004
Сумма 2000
примеры сгенерированы и подсчитаны обычной симуляцией, нужно определить математическую формулу распределения.
Могу начертить графики распределения если необходимо...
Помогите пожалуйста.
А каким образом выбирается, куда кто стреляет?
А по-русски можно? Подробно механизм: кто куда стреляет? Или как определяется количество попаданий по данному защитнику Васе Пупкину?
Понятно теперь, кто куда стреляет, непонятно другое. Числа, которе Вы получаете в результате моделирования, случайны. Количество защитников, в которых никто не стрелял, может быть любым от 0 до общего числа защитников минус 1. Точно так же количество защитников, в которых стрелял кто-то один, может быть любым от 0 до числа защитников. Ну и т.д. все эти числа есть случайные величины. Их нельзя найти ни по какой формуле.
Точно так же, как, бросая монету 10 раз, нельзя ни по какой формуле найти число выпавших орлов. Бросите сегодня - выпадет 4 орла. Завтра - 5, послезавтра - 2. А у меня вчера выпало 10.
Говорить тут можно только о нахождении каких-то вероятностей или математических ожиданий (средних значений). Но это Вы должны определиться, что именно хотите найти. Случайные величины не ищут, на то они и случайны.
именно средние значение и нужны, я наверно, просто, не так выразился.
собственно могу вот 3 рисунка для 3 симуляций 1 исходных данных...
надо найти среднее распределение... Теорию вероятности я подзабыл уже( потому ищу помощи
Картинки ничего не объясняют. Ещё раз - на этих картинках для каждой отдельной серии экспериментов какие-то значения случайных величин получаются. Толку от них никакого. Я понимаю, что Вы тервер забыли, но чтобы что-то искать, нужно точно представлять, что именно.
Вас интересует вектор из матожиданий (средних значений) величин X(0),...,X(n), где X(i) - число защитников, атакованных i нападающими (или, что безразлично, доля к общему числу нападающих)?
Если так ставить задачу, можно подумать, это не должно быть сложно.
Да(судя по определению в вики ) нужно найти вектор мат ожиданий величин для доли к общему числу нападающих...
Прошу прощения за неправильную постановку задачи
Пусть есть m ящиков (защитники) и n шариков (нападающие). Каждый шарик с равной вероятностью и независимо от других кладётся в любой из m ящиков.
Пусть X(0) - число пустых ящиков, X(1) - число ящиков с одним шариком и т.д. до X(n) - числа ящиков с n шариками.
Тогда математическое ожидание M(X(i)) равно C_n^i * (m-1)^{n-i} / m^{n-1} = ( n! / i!*(n-i)! ) * (m-1)^{n-i} / m^{n-1}.
И так по каждой компоненте при i = 0,...,n
Скажем, при n=2000, m=2000, i =1 (у Вас там получалось 735, 704, 759)
M(X(1)) = 2000*(1999/2000)^1999 ~ 735,9428757.
Для "долей" - просто поделите результаты на число нападающих.
Не за что, это не сложно. Вероятности искать было бы хуже
Игрушку делаете?
мм а можно пример для 2 и 3 выстрелов, а то либо я в формулу не так подставил, либо что-то не то выходит? игрушка есть уже... но бои по 25 сек считаются для 200000 выстрелов... а это далеко не предел того, что может быть, ищем оптимизацию.
И возможно есть более простые формулы? те степень 1999 это многовато)... возможно есть хоть ссылки на подобные статьи, материалы?
Возводить в большую степень можно с помощью логарифмирования: a^b = exp(b*ln(a)). Ну и делать это надо с дробью, а не с числителем-знаменателем в отдельности.
Для двух-трёх?
M(X(2)) = (2000! / 2! * 1998!) * 1999^1998 / 2000^1999 = (2000 * 1999 /2) * (1999/2000)^1998 / 2000 = 367,9714379 (Excel)
M(X(3)) = (2000! / 3! * 1997!) * 1999^1997 / 2000^1999 = (2000 * 1999 * 1998 / 6) * (1999/2000)^1997 / 2000^2 = 122,5957867 (Excel)
У Вас там в картинках 0 попаданий - это, наверное, как раз 1-я группа? Для i=0 матожидание равно 735,5749043.
Вообще Excel отлично это всё считает:
=2000*ЧИСЛКОМБ(2000;B1)*(1999/2000)^(2000-B1)/2000^B1
спасибо
есть мысль просто зарание просчитать для прорции атакера/защитника занести в масив и множить мгновенно... только вот точность страдать будет
на глаз видно быть не должно, при милионных толпах
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)