Permuterpublic class Permuter extends Object An object that implements a cheesy pseudorandom permutation of the integers
from zero to some user-specified value. (The permutation is a linear
function.) |
Fields Summary |
---|
private int | modulusThe size of the permutation. | private int | multiplierNonnegative integer less than n that is relatively prime to m. | private int | addendPseudorandom nonnegative integer less than n. |
Constructors Summary |
---|
public Permuter(int n)
if (n<0) {
throw new IllegalArgumentException();
}
modulus = n;
if (n==1) {
return;
}
// Initialize the multiplier and offset
multiplier = (int) Math.sqrt(n);
while (gcd(multiplier, n) != 1) {
if (++multiplier == n) {
multiplier = 1;
}
}
|
Methods Summary |
---|
private static int | gcd(int a, int b)Calculate GCD of a and b, which are assumed to be non-negative.
while(b != 0) {
int tmp = a % b;
a = b;
b = tmp;
}
return a;
| public static void | main(java.lang.String[] args)Simple test. Takes modulus on command line and prints out permutation.
int modulus = Integer.parseInt(args[0]);
Permuter p = new Permuter(modulus);
for (int i=0; i<modulus; i++) {
System.out.print(p.map(i)+" ");
}
System.out.println();
| public int | map(int i)Returns the integer to which this permuter maps the specified integer.
The specified integer must be between 0 and n-1, and the returned
integer will be as well.
return (multiplier * i + addend) % modulus;
|
|