IPB

Здравствуйте, гость ( Вход | Регистрация )

> Интересная задача, помогите решить, распределение величин попадания
BlackGad
сообщение 20.1.2009, 22:24
Сообщение #1


Новичок
*

Группа: Продвинутые
Сообщений: 8
Регистрация: 20.1.2009
Город: Житомир



Столкнулся с задачей - условно есть 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


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

Могу начертить графики распределения (IMG:style_emoticons/default/smile.gif) если необходимо...
Помогите пожалуйста.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов(1 - 14)
malkolm
сообщение 20.1.2009, 22:38
Сообщение #2


Старший преподаватель
*****

Группа: Преподаватели
Сообщений: 2 167
Регистрация: 14.6.2008
Город: Н-ск
Вы: преподаватель



А каким образом выбирается, куда кто стреляет?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BlackGad
сообщение 20.1.2009, 22:44
Сообщение #3


Новичок
*

Группа: Продвинутые
Сообщений: 8
Регистрация: 20.1.2009
Город: Житомир



Цитата(malkolm @ 20.1.2009, 22:38) *

А каким образом выбирается, куда кто стреляет?


алгоритм симуляции

для каждого атакера из всех атакеров
рандом от 1 до количества защитников
количество попаданий по данному защитнику + 1


далее просто группировка по количеству попаданий всех защитников

если шарп или с++ знаком то вот:

int attackCount = 1000;
int defendCount = 2000;

Random r = new Random();
for (int i = 0; i < attackCount; i++)
{
int index = r.Next(defendCount);
if (!attack.ContainsKey(index)) attack.Add(index, 0); // если в списке цели с индексом index нет, добавляем новую запись с 0 попаданий
attack[index]++; //добавляем попадание по защитнику с индексом index
}
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
malkolm
сообщение 20.1.2009, 22:54
Сообщение #4


Старший преподаватель
*****

Группа: Преподаватели
Сообщений: 2 167
Регистрация: 14.6.2008
Город: Н-ск
Вы: преподаватель



А по-русски можно? Подробно механизм: кто куда стреляет? Или как определяется количество попаданий по данному защитнику Васе Пупкину?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BlackGad
сообщение 20.1.2009, 23:12
Сообщение #5


Новичок
*

Группа: Продвинутые
Сообщений: 8
Регистрация: 20.1.2009
Город: Житомир



Цитата(malkolm @ 20.1.2009, 22:54) *

А по-русски можно? Подробно механизм: кто куда стреляет? Или как определяется количество попаданий по данному защитнику Васе Пупкину?


каждый атакующий стреляет 1 раз, причем всегда попадает в противника.

выбор цели для атакующего равновероятный - тоесть (1 любой защитник).
после того, как выстрелили все атакующие: производится подсчет защитников,
1 группа - защитники по которым не попали
2 группа - защитники по которым попали 1 раз
3 группа - защитники по которым попали 2 раза
.....
n группа - защитники по которым попали n+1 раз

если просуммировать количество защитников всех групп - получится общее количество защитников(2000)

теперь определяем количество атакующих для всех групп
1 группа - игнорируется
2 группа - количество атакующих на эту группу = количеству группы*1
3 группа - количество атакующих на эту группу = количеству группы*2
.....
n группа - количество атакующих на эту группу = количеству группы*(n+1)

ну и выводим процент распределения - количество атакующих группы / на общее количество атакующих

нужно найти мат формулу, которая определяет процент распределения без симуляции.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
malkolm
сообщение 20.1.2009, 23:42
Сообщение #6


Старший преподаватель
*****

Группа: Преподаватели
Сообщений: 2 167
Регистрация: 14.6.2008
Город: Н-ск
Вы: преподаватель



Понятно теперь, кто куда стреляет, непонятно другое. Числа, которе Вы получаете в результате моделирования, случайны. Количество защитников, в которых никто не стрелял, может быть любым от 0 до общего числа защитников минус 1. Точно так же количество защитников, в которых стрелял кто-то один, может быть любым от 0 до числа защитников. Ну и т.д. все эти числа есть случайные величины. Их нельзя найти ни по какой формуле.

Точно так же, как, бросая монету 10 раз, нельзя ни по какой формуле найти число выпавших орлов. Бросите сегодня - выпадет 4 орла. Завтра - 5, послезавтра - 2. А у меня вчера выпало 10.

Говорить тут можно только о нахождении каких-то вероятностей или математических ожиданий (средних значений). Но это Вы должны определиться, что именно хотите найти. Случайные величины не ищут, на то они и случайны.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BlackGad
сообщение 20.1.2009, 23:56
Сообщение #7


Новичок
*

Группа: Продвинутые
Сообщений: 8
Регистрация: 20.1.2009
Город: Житомир



(IMG:style_emoticons/default/smile.gif) именно средние значение и нужны, я наверно, просто, не так выразился.

собственно могу вот 3 рисунка для 3 симуляций 1 исходных данных...

(IMG:http://s44.radikal.ru/i104/0901/e8/be349b906dd7.jpg)
(IMG:http://s46.radikal.ru/i114/0901/d7/a6dc38304b1f.jpg)
(IMG:http://s43.radikal.ru/i099/0901/8d/9c213bf75371.jpg)

надо найти среднее распределение... Теорию вероятности я подзабыл уже( потому ищу помощи
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
malkolm
сообщение 21.1.2009, 0:07
Сообщение #8


Старший преподаватель
*****

Группа: Преподаватели
Сообщений: 2 167
Регистрация: 14.6.2008
Город: Н-ск
Вы: преподаватель



Картинки ничего не объясняют. Ещё раз - на этих картинках для каждой отдельной серии экспериментов какие-то значения случайных величин получаются. Толку от них никакого. Я понимаю, что Вы тервер забыли, но чтобы что-то искать, нужно точно представлять, что именно.

Вас интересует вектор из матожиданий (средних значений) величин X(0),...,X(n), где X(i) - число защитников, атакованных i нападающими (или, что безразлично, доля к общему числу нападающих)?

Если так ставить задачу, можно подумать, это не должно быть сложно.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BlackGad
сообщение 21.1.2009, 0:14
Сообщение #9


Новичок
*

Группа: Продвинутые
Сообщений: 8
Регистрация: 20.1.2009
Город: Житомир



Да(судя по определению в вики (IMG:style_emoticons/default/smile.gif) ) нужно найти вектор мат ожиданий величин для доли к общему числу нападающих...

Прошу прощения за неправильную постановку задачи
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
malkolm
сообщение 21.1.2009, 0:18
Сообщение #10


Старший преподаватель
*****

Группа: Преподаватели
Сообщений: 2 167
Регистрация: 14.6.2008
Город: Н-ск
Вы: преподаватель



Пусть есть 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.


Для "долей" - просто поделите результаты на число нападающих.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BlackGad
сообщение 21.1.2009, 0:19
Сообщение #11


Новичок
*

Группа: Продвинутые
Сообщений: 8
Регистрация: 20.1.2009
Город: Житомир



Цитата(malkolm @ 21.1.2009, 0:18) *

Пусть есть 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.
Для "долей" - просто поделите результаты на число нападающих.


то, что нужно... спасибо вам (IMG:style_emoticons/default/thumbsup.gif)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
malkolm
сообщение 21.1.2009, 0:28
Сообщение #12


Старший преподаватель
*****

Группа: Преподаватели
Сообщений: 2 167
Регистрация: 14.6.2008
Город: Н-ск
Вы: преподаватель



Не за что, это не сложно. Вероятности искать было бы хуже (IMG:style_emoticons/default/smile.gif)
Игрушку делаете?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BlackGad
сообщение 21.1.2009, 0:58
Сообщение #13


Новичок
*

Группа: Продвинутые
Сообщений: 8
Регистрация: 20.1.2009
Город: Житомир



мм а можно пример для 2 и 3 выстрелов, а то либо я в формулу не так подставил, либо что-то не то выходит?

(IMG:style_emoticons/default/smile.gif) игрушка есть уже... но бои по 25 сек считаются для 200000 выстрелов... а это далеко не предел того, что может быть, ищем оптимизацию.

И возможно есть более простые формулы? те степень 1999 это многовато)... возможно есть хоть ссылки на подобные статьи, материалы?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
malkolm
сообщение 21.1.2009, 7:09
Сообщение #14


Старший преподаватель
*****

Группа: Преподаватели
Сообщений: 2 167
Регистрация: 14.6.2008
Город: Н-ск
Вы: преподаватель



Возводить в большую степень можно с помощью логарифмирования: 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
Код

735,5749043    0
735,9428757    1
367,9714379    2
122,5957867    3
30,6182824    4
6,1144664    5
1,017038558    6
0,144927813    7
0,018061601    8
0,001999817    9
0,000199181    10
1,80259E-05    11
1,49464E-06    12
1,1434E-07    13
8,1181E-09    14
2000
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BlackGad
сообщение 21.1.2009, 11:25
Сообщение #15


Новичок
*

Группа: Продвинутые
Сообщений: 8
Регистрация: 20.1.2009
Город: Житомир



спасибо (IMG:style_emoticons/default/smile.gif)

есть мысль просто зарание просчитать для прорции атакера/защитника занести в масив и множить мгновенно... только вот точность страдать будет (IMG:style_emoticons/default/smile.gif)

на глаз видно быть не должно, при милионных толпах
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 24.5.2025, 22:40

Книжки в помощь: "Сборник заданий по высшей математике" Кузнецов Л.А., "Сборник заданий по высшей математике" Чудесенко В.Ф., "Индивидуальные задания по высшей математике" Рябушко А.П., и другие.




Зеркало сайта Решебник.Ру - reshebnik.org.ru