rename references

This commit is contained in:
2023-09-28 20:24:18 +08:00
parent 50b5f8c2c1
commit 0be2781d70
274 changed files with 0 additions and 0 deletions

View File

@ -0,0 +1,49 @@
package minesweeper.random;
public class DefaultRNG {
static private Class<? extends RNG> defaultRNG = RNGJava.class;
/**
* Set the default RNG implementation used when creating the mine sweeper boards
* @param rngClass
*/
public static void setDefaultRNGClass(Class<? extends RNG> rngClass) {
defaultRNG = rngClass;
}
/**
* Get the default RNG implementation used when creating the mine sweeper boards
* @param rngClass
*/
public static Class<? extends RNG> getDefaultRNGClass() {
return defaultRNG;
}
/**
* Return an instance of the default random number generator with seed
* @return
*/
public static RNG getRNG(long seed) {
RNG rng = null;
try {
rng = defaultRNG.newInstance();
rng.seed(seed);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
return rng;
}
}

View File

@ -0,0 +1,13 @@
package minesweeper.random;
public interface RNG {
public void seed(long seed);
public long random(int in);
public String name();
public String shortname();
}

View File

@ -0,0 +1,59 @@
package minesweeper.random;
public class RNGJSF implements RNG {
private int[] s;
public RNGJSF() {
}
public RNGJSF(long seed) {
seed(seed);
}
public void seed(long seed) {
int seed1 = (int) Math.abs(seed);
int seed2 = (int) ((Math.abs(seed) >>> 32) & 0x001FFFFFl);
//System.out.println(seed1 + " " + seed2);
s = new int[] {0xf1ea5eed, seed1, seed2, seed1};
for (int i = 0; i < 20; i++) random(1);
}
@Override
public long random(int in) {
int e = s[0] - (s[1] << 27 | s[1] >>> 5);
s[0] = s[1] ^ (s[2] << 17 | s[2] >>> 15);
s[1] = s[2] + s[3];
s[2] = s[3] + e;
s[3] = s[0] + e;
//System.out.println(e + " " + s[0] + " " + s[1] + " " + s[2] + " " + s[3]);
return ((s[3] & 0xFFFFFFFFl) * in) >>> 32;
}
private long bit32(long x) {
return x & 0xFFFFFFFFl;
}
@Override
public String name() {
return "JSF random numbers";
}
@Override
public String shortname() {
return "JSF";
}
}

View File

@ -0,0 +1,46 @@
package minesweeper.random;
import java.util.Random;
public class RNGJava implements RNG {
static String shortName = "Java RNG";
private Random rng = new Random();
public RNGJava() {
}
public RNGJava(long seed) {
seed(seed);
}
@Override
public void seed(long seed) {
rng = new Random(seed);
}
@Override
public long random(int in) {
if (in == 0) {
return rng.nextLong();
} else {
return rng.nextInt(in);
}
//return (long) Math.floor(rng.nextDouble() * in);
}
@Override
public String name() {
return "Standard Java random numbers";
}
@Override
public String shortname() {
return "Java RNG";
}
}

View File

@ -0,0 +1,71 @@
package minesweeper.random;
public class RNGKiss64 implements RNG {
private long kiss64_x = 1234567890987654321l;
private long kiss64_c = 123456123456123456l;
private long kiss64_y = 362436362436362436l;
private long kiss64_z = 1066149217761810l;
private long kiss64_t = 0;
public RNGKiss64() {
}
public RNGKiss64(long seed) {
seed(seed);
}
public void seed(long seed) {
kiss64_x = seed | 1;
kiss64_c = seed | 2;
kiss64_y = seed | 4;
kiss64_z = seed | 8;
kiss64_t = 0;
}
@Override
public long random(int in) {
// multiply with carry
kiss64_t = (kiss64_x << 58) + kiss64_c;
kiss64_c = (kiss64_x >>> 6); // unsigned right shift
kiss64_x += kiss64_t;
//kiss64_c += (kiss64_x < kiss64_t)?1l:0l;
kiss64_c += Long.compareUnsigned(kiss64_x, kiss64_t) < 0 ? 1l:0l;
// XOR shift
kiss64_y ^= (kiss64_y << 13);
kiss64_y ^= (kiss64_y >>> 17); // unsigned right shift
kiss64_y ^= (kiss64_y << 43);
// Congruential
kiss64_z = 6906969069l * kiss64_z + 1234567l;
long rand = kiss64_x + kiss64_y + kiss64_z;
if (in == 0) {
return rand;
} else {
return ((rand & 0xFFFFFFFFl) * in) >>> 32; // unsigned right shift;
}
}
@Override
public String name() {
return "KISS64 random numbers";
}
@Override
public String shortname() {
return "KISS64";
}
}