package ldbc.snb.datagen.generator.distribution; import ldbc.snb.datagen.generator.DatagenParams; import ldbc.snb.datagen.generator.distribution.utils.Bucket; import ldbc.snb.datagen.generator.distribution.utils.BucketedDistribution; import org.apache.commons.math3.distribution.*; import org.apache.hadoop.conf.Configuration; import java.util.ArrayList; /** * Created by aprat on 5/03/15. */ public class DiscreteWeibullDistribution extends CumulativeBasedDegreeDistribution { //private double BETA_ = 0.7787; //private double BETA_ = 0.8211; private double BETA_ = 0.8505; //private double P_ = 0.062; //private double P_ = 0.0448; private double P_ = 0.0205; public ArrayList<CumulativeEntry> cumulativeProbability( Configuration conf ) { BETA_ = conf.getDouble("ldbc.snb.datagen.generator.distribution.DiscreteWeibullDistribution.beta",BETA_); P_ = conf.getDouble("ldbc.snb.datagen.generator.distribution.DiscreteWeibullDistribution.p",P_); ArrayList<CumulativeEntry> cumulative = new ArrayList<CumulativeEntry>(); for( int i = 0; i < DatagenParams.numPersons; ++i ) { //double prob = Math.pow(1.0-P_,Math.pow(i,BETA_))-Math.pow((1.0-P_),Math.pow(i+1,BETA_)); double prob = 1.0-Math.pow((1.0-P_),Math.pow(i+1,BETA_)); CumulativeEntry entry = new CumulativeEntry(); entry.prob_ = prob; entry.value_ = i+1; cumulative.add(entry); } return cumulative; } }