When you think about soldiers sitting in trenches firing at each other with a constant fire rate, you could model it by giving each soldier an x% chance to hit and eliminate one enemy soldier per shot, and repeat until one army is defeated. Note: The function random() in this example returns pseudoradom floating-point values equally distributed between 0.0 and 1.0. double kill_chance = 0.05; // 5% chance to kill an enemy per round int troops_A = 57; // starting strenght of army A int troops_B = 89; // starting strength of army B // combat loop while (troops_A > 0 && troops_B > 0) { int losses_A = 0; int losses_B = 0; // army A fires for (int i = 0; i < troops_A; i++) { if (random() < kill_chance) losses_B++; } // army B fires for (int i = 0; i < troops_B; i++) { if (random() < kill_chance) losses_A++; } // remove casualties troops_A -= losses_A; troops_B -= losses_B; // here would be a good place to report the combat progress to the player } // make sure no army ends up with a negative amount of soldiers if (troops_A < 0) troops_A = 0; if (troops_B < 0) troops_B = 0; Note that this algorithm allows for a result where both armies lose. This would be equivalent to the last two soldiers shooting each other and then bleeding to death. Yeah, war is hell.