package com.ldbc.driver.generator;
import org.apache.commons.math3.distribution.ExponentialDistribution;
import org.apache.commons.math3.random.RandomDataGenerator;
import com.ldbc.driver.util.NumberHelper;
public class ExponentialNumberGenerator<GENERATE_TYPE extends Number> extends Generator<GENERATE_TYPE>
{
private final ExponentialDistribution exponentialDistribution;
private final NumberHelper<GENERATE_TYPE> number;
ExponentialNumberGenerator( RandomDataGenerator random, GENERATE_TYPE mean )
{
this.exponentialDistribution = new ExponentialDistribution( random.getRandomGenerator(), mean.doubleValue(),
ExponentialDistribution.DEFAULT_INVERSE_ABSOLUTE_ACCURACY );
this.number = NumberHelper.createNumberHelper( mean.getClass() );
}
@Override
protected GENERATE_TYPE doNext() throws GeneratorException
{
return number.cast( exponentialDistribution.sample() );
}
}