А каким образом выбирается, куда кто стреляет?
алгоритм симуляции
для каждого атакера из всех атакеров
рандом от 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
}