package com.interview.algorithms.general;
public class C1_1_Random7 {
/**
* random function returns random number [1,5]
* @return
*/
public int rand5(){
return (int) ((5 * Math.random()) % 5 + 1);
}
/**
* use rand5 to create a random number [1,7]
* @return
*/
public int rand7(){
int i;
do
{
i = 5 * (rand5() - 1) + rand5(); // i is now uniformly random between 1 and 25, i = 5 * rand5() - rand5() + 1 also could work
} while(i > 21);
// i is now uniformly random between 1 and 21
return i % 7 + 1; // result is now uniformly random between 1 and 7
}
/**
* @param args
*/
public static void main(String[] args) {
int[] marker1 = new int[8];
int[] marker2 = new int[6];
for(int i = 0; i < 1000000; i++){
int rand = new C1_1_Random7().rand7();
//System.out.println(rand);
marker1[rand]++;
rand = new C1_1_Random7().rand5();
marker2[rand]++;
}
for(int i = 1; i < 8; i++){
System.out.println(marker1[i]);
}
System.out.println("-----------------------");
for(int i = 1; i < 6; i++){
System.out.println(marker2[i]);
}
}
}