@Override
  public void eventOccurred(final AuctionEvent event) {
    super.eventOccurred(event);

    if (event instanceof SimulationStartedEvent) {
      minValueDist =
          new Uniform(
              generator.getMinValueMin(),
              generator.getMinValueMax(),
              Galaxy.getInstance().getDefaultTyped(GlobalPRNG.class).getEngine());
      rangeDist =
          new Uniform(
              generator.getRangeMin(),
              generator.getRangeMax(),
              Galaxy.getInstance().getDefaultTyped(GlobalPRNG.class).getEngine());
    } else if (event instanceof GameStartingEvent) {

      final double minValue = minValueDist.nextDouble();
      final double maxValue = minValue + rangeDist.nextDouble();

      setDistribution(
          new Uniform(
              minValue,
              maxValue,
              Galaxy.getInstance().getDefaultTyped(GlobalPRNG.class).getEngine()));
      drawRandomValue();
    }
  }
  protected AbstractDistribution createDistribution() {

    AbstractDistribution dist = null;
    try {
      // NOTE: cloning the template distribution is not used before it will
      // cause all generated distributions to have a random engine in the same
      // situation and thus generate the same random numbers.

      if (distribution != null) {
        dist = distribution.getClass().newInstance();
        if (dist instanceof StateCopyable) {
          ((StateCopyable) dist).copyStateFrom(distribution);
        } else {
          dist = null;
        }
      }
    } catch (final InstantiationException e) {
      e.printStackTrace();
      dist = null;
    } catch (final IllegalAccessException e) {
      e.printStackTrace();
      dist = null;
    }

    if (dist == null) {
      dist =
          new Uniform(
              minValue,
              maxValue,
              Galaxy.getInstance().getTyped(Game.P_CAT, GlobalPRNG.class).getEngine());
    }

    return dist;
  }
  public void setup(final ParameterDatabase parameters, final Parameter base) {
    final Parameter defBase = new Parameter(RandomValuerGenerator.P_DEF_BASE);

    //// Added code starts here
    //		defBaseNorm = new Parameter(Normal.P_DEF_BASE);
    //// Added code ends here
    //
    minValue =
        parameters.getDouble(
            base.push(RandomValuerGenerator.P_MINVALUE),
            defBase.push(RandomValuerGenerator.P_MINVALUE),
            0);
    maxValue =
        parameters.getDouble(
            base.push(RandomValuerGenerator.P_MAXVALUE),
            defBase.push(RandomValuerGenerator.P_MAXVALUE),
            minValue);

    try {
      distribution =
          parameters.getInstanceForParameterEq(
              base.push(RandomValuerGenerator.P_DISTRIBUTION),
              defBase.push(RandomValuerGenerator.P_DISTRIBUTION),
              AbstractDistribution.class);

      if (distribution instanceof Parameterizable) {
        ((Parameterizable) distribution)
            .setup(parameters, base.push(RandomValuerGenerator.P_DISTRIBUTION));
      }
    } catch (final ParamClassLoadException e) {
      distribution =
          new Uniform(
              minValue,
              maxValue,
              Galaxy.getInstance().getDefaultTyped(GlobalPRNG.class).getEngine());
    }

    checkDistribution(distribution);
  }