diff --git a/src/eva2/problems/DynJumpProblem.java b/src/eva2/problems/DynJumpProblem.java index 27963c72..0047870e 100644 --- a/src/eva2/problems/DynJumpProblem.java +++ b/src/eva2/problems/DynJumpProblem.java @@ -1,4 +1,4 @@ -package eva2.optimization.problems; +package eva2.problems; import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.strategies.InterfaceOptimizer; @@ -13,7 +13,7 @@ import java.io.Writer; * with the given frequency. */ @Description("A real valued problem jumping dynamically.") -public class DynJumpProblem extends AbstractDynTransProblem { +public class DynJumpProblem extends eva2.problems.AbstractDynTransProblem { private static final long serialVersionUID = 2693154860448970283L; diff --git a/src/eva2/problems/F19Problem.java b/src/eva2/problems/F19Problem.java index 7b6a9cf9..7746179f 100644 --- a/src/eva2/problems/F19Problem.java +++ b/src/eva2/problems/F19Problem.java @@ -5,7 +5,7 @@ import eva2.tools.math.RNG; import eva2.util.annotation.Description; import java.util.Arrays; -import java.util.Random; +import java.security.SecureRandom; /** * Fletcher-Powell function with up to 2^n optima from Shir&Baeck, PPSN 2006, @@ -39,14 +39,13 @@ public class F19Problem extends AbstractProblemDouble implements @Override public void initializeProblem() { super.initializeProblem(); -// if (alphas==null) { // create static random data - Random rand = new Random(randSeed); + SecureRandom rand = new SecureRandom(); + rand.setSeed(randSeed); alphas = RNG.randomDoubleArray(rand, -Math.PI, Math.PI, dim); A = RNG.randomIntArray(rand, -100, 100, dim * dim); B = RNG.randomIntArray(rand, -100, 100, dim * dim); As = transform(alphas); -// } } private double[] transform(double[] x) { diff --git a/src/eva2/tools/math/RNG.java b/src/eva2/tools/math/RNG.java index 168e76ee..00d398b8 100644 --- a/src/eva2/tools/math/RNG.java +++ b/src/eva2/tools/math/RNG.java @@ -4,7 +4,7 @@ import eva2.tools.EVAERROR; import java.util.ArrayList; import java.util.BitSet; -import java.util.Random; +import java.security.SecureRandom; /** * Random number generator used across all optimizations @@ -12,7 +12,7 @@ import java.util.Random; */ public class RNG { - private static Random random; + private static SecureRandom random; private static long randomSeed; /** @@ -20,7 +20,8 @@ public class RNG { */ static { randomSeed = System.currentTimeMillis(); - random = new Random(randomSeed); + random = new SecureRandom(); + random.setSeed(randomSeed); } /** @@ -32,7 +33,8 @@ public class RNG { if (randomSeed == 0) { setRandomSeed(); } else { - random = new Random(randomSeed); + random = new SecureRandom(); + random.setSeed(randomSeed); } } @@ -49,13 +51,14 @@ public class RNG { */ public static void setRandomSeed() { randomSeed = System.currentTimeMillis(); - random = new Random(randomSeed); + random = new SecureRandom(); + random.setSeed(randomSeed); } /** * */ - public static void setRandom(Random baseRandom) { + public static void setRandom(SecureRandom baseRandom) { random = baseRandom; } @@ -138,7 +141,7 @@ public class RNG { * @param hi Upper bound. * @return int */ - public static int randomInt(Random rand, int lo, int hi) { + public static int randomInt(SecureRandom rand, int lo, int hi) { if (hi < lo) { System.err.println("Invalid boundary values! Returning zero."); return -1; @@ -193,7 +196,7 @@ public class RNG { return (hi - lo) * random.nextDouble() + lo; } - public static double randomDouble(Random rand, double lo, double hi) { + public static double randomDouble(SecureRandom rand, double lo, double hi) { return (hi - lo) * rand.nextDouble() + lo; } @@ -234,13 +237,9 @@ public class RNG { result[i] = RNG.randomDouble(lower, upper); } return result; - // double[] xin = new double[size]; - // for (int i=0;i