/* @(#)ProbStatTools.java 1.0 10 October 2004 */ import edu.neu.ccs.util.*; /** *
Class ProbStatTools
Returns an array with the integers in sequence: * 0, 1, etc, up to (n-1).
* *If n is less than or equal to zero, then returns an * empty array of integers.
*/ public static int[] integerSequence(int n) { if (n <= 0) return new int[0]; int[] result = new int[n]; for (int i = 0; i < n; i++) result[i] = i; return result; } /** *Returns an array of length k consisting of integers * chosen from 0 to (n-1) with repetition permitted.
* *If n or k is less than or equal to zero, then returns * an empty array of integers.
*/ public static int[] selectWithRepetition(int n, int k) { if ((n <= 0) || (k <= 0)) return new int[0]; return selectWithRepetition(integerSequence(n), k); } /** *Returns an array of length k consisting of integers * chosen from 0 to (n-1) with no repetition permitted.
* *If k is less than or equal to zero or greater than n, * then returns an empty array of integers.
*/ public static int[] selectWithNoRepetition(int n, int k) { if ((k <= 0) || (k > n)) return new int[0]; return selectWithNoRepetition(integerSequence(n), k); } /** *Returns an array whose contents is a random selection of * k elements from the contents of the given data with * repetition of a selected index permitted.
* *The data array is unchanged.
* *If the data array is null
* or if k is less than or equal to zero,
* then returns an empty array of integers.
Returns an array whose contents is a random selection of * k elements from the contents of the given data with * no repetition of a selected index.
* *The data array is unchanged.
* *If the data array is null
* or if k is less than or equal to zero
* or if k is greater than the data array size,
* then returns an empty array of integers.
Returns an array whose contents is a random permutation * of the contents in the data array.
* *The data array is unchanged.
* *If the data array is null,
* then returns an empty array of integers.
Returns an int array that repeats the data in * the given array sequentially k times. * *
If the data array is null or
* if k is less than or equal to zero,
* then returns an empty array of integers.
If k equals one, then copies the given data.
*/ public static int[] repeatData(int[] data, int k) { if ((data == null) || (k <= 0)) return new int[0]; int size1 = data.length; int sizek = k * size1; int[] result = new int[sizek]; for (int i = 0; i < size1; i++) { for (int j = 0; j < k; j++) { result[i + j * size1] = data[i]; } } return result; } }