Java Reference
In-Depth Information
other words, for each static final field, there is a field associated with the class
itself whose value never changes.
Example 2•6: Randomizer.java
package com.davidflanagan.examples.classes;
/**
* This class defines methods for computing pseudo-random numbers, and defines
* the state variable that needs to be maintained for use by those methods.
**/
public class Randomizer {
// Carefully chosen constants from the topic "Numerical Recipes in C".
// All "static final" fields are constants.
static final int m = 233280;
static final int a = 9301;
static final int c = 49297;
// The state variable maintained by each Randomizer instance
int seed = 1;
/**
* The constructor for the Randomizer() class. It must be passed some
* arbitrary initial value or "seed" for its pseudo-randomness.
**/
public Randomizer(int seed) { this.seed = seed; }
/**
* This method computes a pseudo-random number between 0 and 1 using a very
* simple algorithm. Math.random() and java.util.Random are actually a lot
* better at computing randomness.
**/
public float randomFloat() {
seed = (seed * a + c) % m;
return (float) Math.abs((float)seed/(float)m);
}
/**
* This method computes a pseudo-random integer between 0 and specified
* maximum. It uses randomFloat() above.
**/
public int randomInt(int max) {
return Math.round(max * randomFloat());
}
/**
* This nested class is a simple test program: it prints 10 random ints.
* Note how the Randomizer object is seeded using the current time.
**/
public static class Test {
public static void main(String[] args) {
Randomizer r = new Randomizer((int)new java.util.Date().getTime());
for(int i = 0; i < 10; i++) System.out.println(r.randomInt(100));
}
}
}
Example 2-6 introduces an important new feature. The Randomizer class defines a
static inner class named Test . This class, Randomizer.Test , contains a main()
method and is thus a standalone program suitable for testing the Randomizer class.
When you compile the
Randomizer.java
file, you get two class files,
Search WWH ::




Custom Search