00001
00002
00003
00004
00005
00006
00007
00008
00009 package org.sci2s.eamhco;
00010 import java.util.*;
00011
00016 public class RandomGenerator extends Randomize
00017 {
00019 protected static Random random = null;
00020
00022 protected static long seed = 0;
00023
00028 public static void setSeed(long s)
00029 {
00030 RandomGenerator.seed = s;
00031 Randomize.setSeed(s);
00032 random = new Random();
00033 random.setSeed(s);
00034 }
00035
00043 public static ArrayList<Integer> generateDifferentRandomIntegersWithStep(int min, int max, int inc)
00044 {
00045
00046 int number = (max-min+1)/inc;
00047 ArrayList<Integer> list = new ArrayList<Integer>(number);
00048 for(int i=min; i<=max; i+=inc)
00049 list.add(i);
00050 Collections.shuffle(list, random);
00051 return list;
00052 }
00053
00060 public static ArrayList<Integer> generateDifferentRandomIntegers(int min, int max)
00061 {
00062
00063 int number = max-min+1;
00064 ArrayList<Integer> list = new ArrayList<Integer>(number);
00065 for(int i=min; i<=max; ++i)
00066 list.add(i);
00067 Collections.shuffle(list, random);
00068 return list;
00069 }
00070
00078 public static ArrayList<Integer> generateDifferentRandomIntegers(int min, int max, int number)
00079 {
00080
00081 ArrayList<Integer> list = new ArrayList<Integer>(number);
00082 int count=0;
00083 for(int i=min; count<number && i<=max; ++i)
00084 {
00085 list.add(i);
00086 ++count;
00087 }
00088 Collections.shuffle(list, random);
00089 return list;
00090 }
00091
00099 public static ArrayList<Double> generateDifferentRandomNumbersWithStep(double min, double max, double inc)
00100 {
00101
00102 int number = (int)Math.floor((max-min+1)/inc);
00103 ArrayList<Double> list = new ArrayList<Double>(number);
00104 for(double i=min; i<=max; i+=inc)
00105 list.add(i);
00106 Collections.shuffle(list, random);
00107 return list;
00108 }
00109
00116 public static ArrayList<Double> generateDifferentRandomNumbers(double min, double max)
00117 {
00118
00119 int number = (int)(max-min+1);
00120 ArrayList<Double> list = new ArrayList<Double>(number);
00121 for(double i=min; i<=max; ++i)
00122 list.add(i);
00123 Collections.shuffle(list, random);
00124 return list;
00125 }
00126
00134 public static ArrayList<Double> generateDifferentRandomNumbers(double min, double max, int number)
00135 {
00136
00137 ArrayList<Double> list = new ArrayList<Double>(number);
00138 int count = 0;
00139 for(double i=min; count<number && i<=max; ++i)
00140 {
00141 list.add(i);
00142 ++count;
00143 }
00144 Collections.shuffle(list, random);
00145 return list;
00146 }
00147
00153 public static <T> T randomSelector(T a, T b)
00154 {
00155 T result = a;
00156 if(RandomGenerator.Randint(0, 1) == 0)
00157 result = b;
00158 return result;
00159 }
00160
00161 }