/**
* Robert Sedgewick Algorithms in C++<br>
* Chapter 35 Random Numbers<br>
* Problem2<br>
* 標準でないサイコロ(例えば、数が1,2,3,5,8,13となっている)を2つ投げてその和をとって乱数を生成する。どのようにシミュレートするか?
*/
public class Chapter35RandomNumbersProblem2 {
public static void main(String[] args) {
Chapter35RandomNumbersProblem2 o = new Chapter35RandomNumbersProblem2();
o.run();
}

private void run() {
DiceRNG rng = new DiceRNG();
for (int i = 0; i < 100; i++) {
System.out.println(rng.nextDouble());
}
}

private class DiceRNG {
private int[] dice = new int[] { 1, 2, 3, 5, 8, 13 };

public int nextInt() {
return dice[(int) (System.nanoTime() % 6)] + dice[(int) (System.nanoTime() % 6)];
}

public double nextDouble() {
return nextInt() / 26.0;
}
}
}