Skip to content

Instantly share code, notes, and snippets.

@fornwall
Created July 12, 2011 11:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fornwall/1077774 to your computer and use it in GitHub Desktop.
Save fornwall/1077774 to your computer and use it in GitHub Desktop.
Calculating chances in the game of Risk
import java.util.Arrays;
public class Risk {
public static void main(String[] args) {
long defenderLoosesTwo = 0;
long eachLoosesOne = 0;
long attackerLoosesTwo = 0;
int[] attackerDices = new int[3];
int[] defenderDices = new int[2];
for (int firstAttackerDice = 1; firstAttackerDice < 6; firstAttackerDice++) {
for (int secondAttackerDice = 1; secondAttackerDice < 6; secondAttackerDice++) {
for (int thirdAttackerDice = 1; thirdAttackerDice < 6; thirdAttackerDice++) {
for (int firstDefenderDice = 1; firstDefenderDice < 6; firstDefenderDice++) {
for (int secondDefenderDice = 1; secondDefenderDice < 6; secondDefenderDice++) {
attackerDices[0] = firstAttackerDice;
attackerDices[1] = secondAttackerDice;
attackerDices[2] = thirdAttackerDice;
defenderDices[0] = firstDefenderDice;
defenderDices[1] = secondDefenderDice;
Arrays.sort(attackerDices);
Arrays.sort(defenderDices);
int numDefenderLosses = 0;
if (attackerDices[2] > defenderDices[1]) numDefenderLosses++;
if (attackerDices[1] > defenderDices[0]) numDefenderLosses++;
if (numDefenderLosses == 2) defenderLoosesTwo++;
else if (numDefenderLosses == 1) eachLoosesOne++;
else if (numDefenderLosses == 0) attackerLoosesTwo++;
}
}
}
}
}
double countTotalPossibilities = defenderLoosesTwo + eachLoosesOne + attackerLoosesTwo;
double percentageDefenderLoosesTwo = 100 * defenderLoosesTwo / countTotalPossibilities;
double percentageEachLoosesOne = 100 * eachLoosesOne / countTotalPossibilities;
double percentageAttackerLoosesTwo = 100 * attackerLoosesTwo / countTotalPossibilities;
System.out.println("Defender looses two: " + percentageDefenderLoosesTwo);
System.out.println("Each looses one: " + percentageEachLoosesOne);
System.out.println("Attacker looses two: " + percentageAttackerLoosesTwo);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment