![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
BlackGad |
![]()
Сообщение
#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) если необходимо... Помогите пожалуйста. |
![]() ![]() |
malkolm |
![]()
Сообщение
#2
|
Старший преподаватель ![]() ![]() ![]() ![]() ![]() Группа: Преподаватели Сообщений: 2 167 Регистрация: 14.6.2008 Город: Н-ск Вы: преподаватель ![]() |
А каким образом выбирается, куда кто стреляет?
|
BlackGad |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Продвинутые Сообщений: 8 Регистрация: 20.1.2009 Город: Житомир ![]() |
А каким образом выбирается, куда кто стреляет? алгоритм симуляции для каждого атакера из всех атакеров рандом от 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 } |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 27.5.2025, 23:11 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru