import objectdraw.*; import java.util.Random; /** * Generate an array of random numbers and print out statistics * about the numbers. */ public class RandomStats extends FrameWindowController { // Maximum and minimum array size private static final int MAX_SIZE = 20; private static final int MIN_SIZE = 10; // Maximum value of array items private static final int MAX_RAND_VAL = 20; private Random rand = new Random(); public void begin() { int[] randomNums = generateRandomArray(); printArray(randomNums); System.out.println(); // print out statistics about the array System.out.println("Sum is " + getSum(randomNums)); System.out.println("Max is " + getMax(randomNums)); System.out.println("Average is " + getAverage(randomNums)); System.out.println("Mode is " + getMode(randomNums)); } public int[] generateRandomArray() { Random gen = new Random(); int numValues = rand.nextInt(MAX_SIZE - MIN_SIZE) + MIN_SIZE; int[] values = new int[numValues]; for (int i = 0; i < numValues; i++) { values[i] = gen.nextInt(MAX_RAND_VAL); } return values; } public void printArray(int[] values) { for (int i = 0; i < values.length; i++) { System.out.println("Index " + i + ": " + values[i]); } } public int getSum(int[] values) { int sum = 0; for (int i = 0; i < values.length; i++) { sum = sum + values[i]; } return sum; } public int getMax(int[] values) { int max = 0; for (int i = 0; i < values.length; i++) { if (values[i] > max) { max = values[i]; } } return max; } public int getAverage(int[] values) { return getSum(values) / values.length; } public int getMode(int[] values) { int mostFrequentValue = 0; int maxOccurrences = 0; // create an array to store the number of occurrences of // each possible array value int maxVal = getMax(values); int[] occurrences = new int[maxVal + 1]; for (int i = 0; i < values.length; i++) { int currentVal = values[i]; occurrences[currentVal]++; if (occurrences[currentVal] > maxOccurrences) { maxOccurrences = occurrences[currentVal]; mostFrequentValue = currentVal; } } return mostFrequentValue; } }