package com.imsl.test.example.stat;
import com.imsl.stat.*;
import com.imsl.math.*;
/**
*
* Generates a pseudorandom sample from a discrete uniform distribution.
*
*
*
* In this example, nextDiscrete
and
* nextUniformDiscrete
are each used to generate discrete uniform
* pseudorandom numbers. Note that the probabilities across the possible values
* must be equal, in order to generate uniformly from nextDiscrete
.
* Also note that since the same random seed is used, the methods produce the
* same results.
*
* $$\begin{array}{c}\operatorname{Pr}(X=1)=0.20\\
* \operatorname{Pr}(X=2)=0.20\\\operatorname{Pr}(X=3)=0.20 \\
* \operatorname{Pr}(X=4)=0.20\\\operatorname{Pr}(X=5)=0.20\end{array}$$
*
*
*
* @see Code
* @see Output
*/
public class RandomEx4 {
static Random IMSLRandom() {
Random r = new Random();
r.setSeed(123457);
r.setMultiplier(16807);
return r;
}
public static void main(String args[]) {
int[] deviates = new int[5];
int[] deviatesUniform = new int[5];
double[] prob1 = {.20, .20, .20, .20, .20};
PrintMatrix pm = new PrintMatrix("Random deviates");
PrintMatrixFormat pmf = new PrintMatrixFormat();
Random r = IMSLRandom();
for (int i = 0; i < 5; i++) {
deviates[i] = r.nextDiscrete(1, prob1);
}
pmf.setNoColumnLabels();
pmf.setNoRowLabels();
pm.print(pmf, deviates);
Random rUniform = IMSLRandom();
for (int i = 0; i < 5; i++) {
deviatesUniform[i] = rUniform.nextUniformDiscrete(5);
}
pm.print(pmf, deviatesUniform);
}
}