import java.io.PrintStream; import java.util.List; import java.util.ArrayList; import java.util.Random; public class CoinFlip { public static void main(String[] args) { PrintStream output = System.out; final int M = 100000; final int N = 20; List heads = new ArrayList(); for (int i = 0; i <= N; i++) { heads.add(0); } Random rng = new Random(); for (int trial = 0; trial < M; trial++) { int count = 0; for (int flip = 0; flip < N; flip++) { if (rng.nextBoolean()) { count++; } } int index = count; int oldCount = heads.get(index); heads.set(index, oldCount + 1); } for (int i = 0; i <= N; i++) { int count = heads.get(i) / 1000; /* NOTE: the 1000 is for scaling purposes */ output.printf("%2d", i); if (count > 0) { String format = "%" + count + "s"; output.printf(format, "*"); } output.println(); } } }