//: net/mindview/util/RandomGenerator.java // Generators that produce random values. package net.mindview.util; import java.util.Random; public class RandomGenerator { private static Random r = new Random(47); public static class Boolean implements Generator<java.lang.Boolean> { public java.lang.Boolean next() { return r.nextBoolean(); } } public static class Byte implements Generator<java.lang.Byte> { public java.lang.Byte next() { return (byte) r.nextInt(); } } public static class Character implements Generator<java.lang.Character> { public java.lang.Character next() { return CountingGenerator.chars[r .nextInt(CountingGenerator.chars.length)]; } } public static class String extends CountingGenerator.String { // Plug in the random Character generator: { cg = new Character(); } // Instance initializer public String() { } public String(int length) { super(length); } } public static class Short implements Generator<java.lang.Short> { public java.lang.Short next() { return (short) r.nextInt(); } } public static class Integer implements Generator<java.lang.Integer> { private int mod = 10000; public Integer() { } public Integer(int modulo) { mod = modulo; } public java.lang.Integer next() { return r.nextInt(mod); } } public static class Long implements Generator<java.lang.Long> { private int mod = 10000; public Long() { } public Long(int modulo) { mod = modulo; } public java.lang.Long next() { return new java.lang.Long(r.nextInt(mod)); } } public static class Float implements Generator<java.lang.Float> { public java.lang.Float next() { // Trim all but the first two decimal places: int trimmed = Math.round(r.nextFloat() * 100); return ((float) trimmed) / 100; } } public static class Double implements Generator<java.lang.Double> { public java.lang.Double next() { long trimmed = Math.round(r.nextDouble() * 100); return ((double) trimmed) / 100; } } } // /:~