ArraysAndRandomNumbers.java
- package org.drip.zen.juice;
- /*
- * 1) Concept of Random Number
- * 2) Generate a Random Number between 0 and 1
- * 3) Concept of evenly distributed Random Number between Left and Right
- * 4) Generate a Random Number between "Lower Bound" and "Upper Bound"
- * 5) Concept of an Array - syntax and Usage
- * 6) Generate an Array of bounded Random Numbers
- * 7) Concept of Distribution of Buckets
- */
- public class ArraysAndRandomNumbers {
- static double RandomNumber0_1()
- {
- return Math.random();
- }
- static double RandomNumber (double lowerBound, double upperBound)
- {
- double randomNumber = lowerBound + (upperBound - lowerBound) * RandomNumber0_1();
- return randomNumber;
- }
- static double[] RandomNumberArray (double lowerBound, double upperBound, int arraySize)
- {
- double[] randomArray = new double[arraySize];
- for (int counter = 0; counter < arraySize; counter = counter + 1)
- {
- randomArray[counter] = RandomNumber (lowerBound, upperBound);
- }
- return randomArray;
- }
- static int[] QuartileDistribution (double lowerBound, double upperBound, double[] randomNumberArray)
- {
- int numberOfBuckets = 4;
- int[] quartileBuckets = new int[numberOfBuckets];
- int arraySize = randomNumberArray.length;
- double bucketWidth = (upperBound - lowerBound) / numberOfBuckets;
- for (int counter = 0; counter < arraySize; counter = counter + 1)
- {
- double randomNumber = randomNumberArray[counter];
- if (randomNumber >= lowerBound && randomNumber < lowerBound + bucketWidth)
- quartileBuckets[0] = quartileBuckets[0] + 1;
- else if (randomNumber >= lowerBound + bucketWidth && randomNumber < lowerBound + 2 * bucketWidth)
- quartileBuckets[1] = quartileBuckets[1] + 1;
- else if (randomNumber >= lowerBound + 2 * bucketWidth && randomNumber < lowerBound + 3 * bucketWidth)
- quartileBuckets[2] = quartileBuckets[2] + 1;
- else if (randomNumber >= lowerBound + 3 * bucketWidth && randomNumber <= upperBound)
- quartileBuckets[3] = quartileBuckets[3] + 1;
- }
- return quartileBuckets;
- }
- public static void main (String[] input)
- {
- double myLowerBound = 0;
- double myUpperBound = 100;
- int myArraySize = 100000;
- double[] myRandomNumberArray = RandomNumberArray (myLowerBound, myUpperBound, myArraySize);
- int[] myQuartileBuckets = QuartileDistribution (myLowerBound, myUpperBound, myRandomNumberArray);
- System.out.println ("\tFirst Quartile : " + myQuartileBuckets[0] + " | " + (100. * myQuartileBuckets[0] / myArraySize) + "%");
- System.out.println ("\tSecond Quartile : " + myQuartileBuckets[1] + " | " + (100. * myQuartileBuckets[1] / myArraySize) + "%");
- System.out.println ("\tThird Quartile : " + myQuartileBuckets[2] + " | " + (100. * myQuartileBuckets[2] / myArraySize) + "%");
- System.out.println ("\tFourth Quartile : " + myQuartileBuckets[3] + " | " + (100. * myQuartileBuckets[3] / myArraySize) + "%");
- }
- }