import java.util.Random; public class Experiment { private static int MAX_BOARD_SIZE = 100; private static int MAX_VALUE = 100; public Experiment() { } public double game(Player p1, Player p2, Board board) { int move; int p1_score = 0; int p2_score = 0; boolean p1_on_move = true; while (board.size() > 0) { if (p1_on_move) { move = p1.move(board); p1_score += board.at(move); } else { move = p2.move(board); p2_score += board.at(move); } board.drop(move); p1_on_move = !p1_on_move; } if (p1_score > p2_score) return 1.0; if (p2_score > p1_score) return 0.0; return 0.5; } public double experiment(Player p1, Player p2, int num_of_trials) { int board_size; Board board; Random rand = new Random(); double p1_results = 0.0; for (int i = 0; i < num_of_trials; i++) { board_size = 2 * (rand.nextInt(MAX_BOARD_SIZE/2) + 1); board = Board.random(board_size, MAX_VALUE); p1_results += game(p1, p2, board); } return p1_results; } }