using System.Collections.Generic;
public static void Main()
double enemyHitRate = 0.1;
List<double> ownOriginalHealths = new List<double>();
ownOriginalHealths.Add(90);
ownOriginalHealths.Add(90);
ownOriginalHealths.Add(96);
ownOriginalHealths.Add(97);
ownOriginalHealths.Add(50);
ownOriginalHealths.Add(50);
ownOriginalHealths.Add(45);
ownOriginalHealths.Add(45);
ownOriginalHealths.Add(45);
ownOriginalHealths.Add(45);
ownOriginalHealths.Add(45);
ownOriginalHealths.Add(45);
List<double> enemyOriginalHealths = new List<double>();
enemyOriginalHealths.Add(500);
enemyOriginalHealths.Add(260);
enemyOriginalHealths.Add(260);
enemyOriginalHealths.Add(90);
enemyOriginalHealths.Add(90);
enemyOriginalHealths.Add(90);
Random rng = new Random();
List<bool> results = new List<bool>();
List<double> ownHealths = new List<double>(ownOriginalHealths);
List<double> enemyHealths = new List<double>(enemyOriginalHealths);
for (int i = 0; i < rng.Next(40000, 60000); i++) {
for (int j = 0; j < ownOriginalHealths.Count; ++j){
ownHealths[j] = ownOriginalHealths[j];
for (int j = 0; j < enemyOriginalHealths.Count; ++j){
enemyHealths[j] = enemyOriginalHealths[j];
for (int q = 0; q < ownHealths.Count; q++) {
ownHealths[q] -= initialDmg * rng.NextDouble() * rng.NextDouble();
int ship = rng.Next(0, 6);
if (rng.NextDouble() < enemyHitRate) {
ownHealths[ship] -= Math.Max(enemyMaxDmg * rng.NextDouble(), enemyMinDmg);
if (ownHealths[ship] < ownOriginalHealths[ship] * 0.25d) break;
for (int k = 0; k < ownHealths.Count; ++k){
if (ownHealths[k] > 0) hitRate += 1;
hitRate = hitRate / ownHealths.Count + 1;
for (int z = 0; z < hitRate; ++z){
bool anyalive = false; for(int k = 0; k < enemyHealths.Count; ++k){ if (enemyHealths[k] > 0d) anyalive = true; }
enemyship = rng.Next(0, 6);
} while (enemyHealths[enemyship] < 0d);
if (rng.NextDouble() < ownHitRate) {
enemyHealths[enemyship] -= Math.Max(ownMinDmg, rng.NextDouble() * ownMaxDmg);
results.Add(enemyHealths[0] < 0d);
double successChance = (double)results.Count(x => x == true) / (double)results.Count;
Console.WriteLine("Success chance: " + String.Format("{0:F20}", successChance));