Если тема все еще актуальна, могу предложить следующее.
Для того чтобы ввести в это дело вероятность можно сделать различный т.н. "коэффициент атаки", очередность ударов и вероятности нанесения удара зависящую от того пропущен ли был предыдущий удар.
Для того чтобы удар был не всегда постоянный - ввсести т.н. моногмерный кубик - NdM+K .
Например, если максимальный удар 850, то для него считать удар где-то по такой формуле - 11d5+795. Что означает удар будет 800-850. 11d5 означает что подбросили 5 раз 11-гранный кубик, то есть сумма 5-ти случайных чисел от 1 до 11. (Возможны другие варианты).
Вероятность события можно считать следующим образом. Например, вероятность события равна N%, тогда надо получить случайное число от 0 до 100 и если полученное число меньше N, то событие произошло, если больше,то неудача.
При определении "попал-непопал" считать, что вероятность равна 50% у каждого корабля.
Для внесения большей непредсказуемости можно не одновременно списывать нанеаенный ущерб с каждого корабля а по очереди. Случайно определять кто первый ударил при каждом ходе. У первого будет явно преимущество и если первый попал во второго, то снижать вероятность нанесения удара вторым скажем до 45% (что-то типа не оправился от удара). На следующем ходе запоминать пропустил ли противник предыдущий удар. В случае если имелась вероятность 45% и противник предыдущим ударом промазал, то вероятность опять повышается до 50%.
Рассчетов больших проводить не нужно, а исход битвы станет более непредсказуемым.