1 #ifndef LOCARNA_DISCRETE_DISTRIBUTION 2 #define LOCARNA_DISCRETE_DISTRIBUTION 15 std::vector<double> distrib_acc_;
24 if (distvec.size()==0)
return;
26 distrib_acc_.resize(distvec.size());
28 distrib_acc_[0] = distvec[0];
29 for (
size_t i=1; i<distvec.size(); i++) {
30 distrib_acc_[i]+=distrib_acc_[i-1]+distvec[i];
32 double max_acc = distrib_acc_[distvec.size()-1];
33 for (
size_t i=0; i<distvec.size(); i++) {
34 distrib_acc_[i]/=max_acc;
46 double y=x/(double)RAND_MAX;
49 for (; i<distrib_acc_.size() && y>distrib_acc_[i]; ++i)
52 assert(i<=distrib_acc_.size());
59 #endif //LOCARNA_DISCRETE_DISTRIBUTION size_t operator()(size_t x)
get random number
Definition: discrete_distribution.hh:45
Definition: aligner.cc:17
DiscreteDistribution(const std::vector< double > &distvec)
Construct with distribution vector.
Definition: discrete_distribution.hh:22
Definition: discrete_distribution.hh:13