RandomNumberBucketArray.java

package org.drip.zen.numbers;

public class RandomNumberBucketArray {

	public static double CalculatePercentage (int count, int total)
	{
		double percent = 100. * (double) count / (double) total;
		return percent;
	}

	public static int FindBucketIndex (double number, int totalBuckets)
	{
		int bucketIndex = 0;
		double bucketWidth = 1. / totalBuckets;

		for (int i = 0; i < totalBuckets; i = i + 1) {
			double bucketLeftEnd = i * bucketWidth;
			double bucketRightEnd = (i + 1) * bucketWidth;

			if (number > bucketLeftEnd && number <= bucketRightEnd)
				bucketIndex = i;
		}

		return bucketIndex;
	}

	public static void main (String[] args)
	{
		int numberOfBuckets = 10;

		int[] countbucket = new int[numberOfBuckets];

		int totalTrials = 10000;
		int trialNumber = 1;

		while (trialNumber <= totalTrials)
		{
			double randomNumber = Math.random();

			int randomNumberBucket = FindBucketIndex (randomNumber, numberOfBuckets);

			countbucket[randomNumberBucket] = countbucket[randomNumberBucket] + 1;

			trialNumber = trialNumber + 1;
		}

		String countString = "\t| ";

		for (int i = 0; i < numberOfBuckets; i = i + 1)
			countString = countString + countbucket[i] + " | ";

		System.out.println (countString);

		String countPercentString = "\t| ";

		for (int i = 0; i < numberOfBuckets; i = i + 1)
			countPercentString = countPercentString + CalculatePercentage (countbucket[i], totalTrials) + "% | ";

		System.out.println (countPercentString);
	}
}