code: public void setSeed(long seedVal) {
  		try {
  			Field f = Random.class.getDeclaredField("seed"); //NoSuchFieldException
  			f.setAccessible(true);
  			AtomicLong seed = (AtomicLong) f.get(random);
  			seed.set(seedVal);
  		} catch(NoSuchFieldException e) {
  			throw new RuntimeException("Couldn't access seed field - perhaps JDK Random object not laid out as expected?", e);
  		} catch(IllegalAccessException e) {
  			throw new RuntimeException("Couldn't access seed field - are you running under a SecurityManager?", e);
  		} catch(SecurityException e) {
  			throw new RuntimeException("Couldn't access seed field - are you running under a SecurityManager?", e);
  		}
  	}
docs: Sets the random seem value for Sham's internal random number generator. Since
  {@link java.util.Random java.util.Random} does not allow us to set this directly
  (the {@link Random#setSeed(long) Random.setSeed()} and {@link Random#Random(long) new Random(seed)} calls don't set it directly,
  the seed gets mutated first), we use reflection to set it. This has been tested in Sun / Oracle JRE
  1.6 - other implementations may not work yet. Also may not work if you're running inside a
  {@link SecurityManager}.
  
  @param seedVal the value to set the seed to