package com.yahoo.dtf.config;
import java.util.Random;
import com.yahoo.dtf.config.DynamicProperty;
import com.yahoo.dtf.exception.ParseException;
public class DTFGaussianLong implements DynamicProperty {
public static final String DTF_GAUSSIANLONG = "dtf.gaussianLong";
private static Random rand = new Random(System.currentTimeMillis());
public String getValue(String args) throws ParseException {
if ( args != null ) {
int index = args.indexOf(',');
if ( index == -1 ) {
Long upper = new Long(args);
return "" + (long)nextGaussian()*upper;
} else {
Long lower = new Long(args.substring(0,index));
Long upper = new Long(args.substring(index+1));
return "" + ((long)(lower + nextGaussian()*(upper - lower)));
}
} else {
return "" + ((long)(Long.MIN_VALUE + nextGaussian()* (Long.MAX_VALUE - Long.MIN_VALUE)));
}
}
/**
*
* @return
*/
public double nextGaussian() {
return Math.abs(rand.nextGaussian()) % 1.0;
}
}