package net.sourceforge.jabm.distribution; import java.io.File; import org.apache.commons.math3.random.RandomGenerator; import org.springframework.beans.factory.InitializingBean; import cern.jet.random.AbstractContinousDistribution; import cern.jet.random.engine.RandomEngine; public class EmpiricalDistribution extends AbstractContinousDistribution implements InitializingBean { protected org.apache.commons.math3.random.EmpiricalDistribution delegate; protected String dataFileName; protected int binCount; protected RandomEngine prng; @Override public double nextDouble() { return delegate.getNextValue(); } public String getDataFileName() { return dataFileName; } public void setDataFileName(String dataFileName) { this.dataFileName = dataFileName; } public int getBinCount() { return binCount; } public void setBinCount(int binCount) { this.binCount = binCount; } public RandomEngine getPrng() { return prng; } public void setPrng(RandomEngine prng) { this.prng = prng; } @Override public void afterPropertiesSet() throws Exception { RandomGenerator generator = new RandomGeneratorAdaptor(prng); delegate = new org.apache.commons.math3.random.EmpiricalDistribution(binCount, generator); delegate.load(new File(dataFileName)); } }