1 #ifndef LOCARNA_DISCRETE_DISTRIBUTION
2 #define LOCARNA_DISCRETE_DISTRIBUTION
15 std::vector<double> distrib_acc_;
25 if (distvec.size() == 0)
28 distrib_acc_.resize(distvec.size());
30 distrib_acc_[0] = distvec[0];
31 for (
size_t i = 1; i < distvec.size(); i++) {
32 distrib_acc_[i] += distrib_acc_[i - 1] + distvec[i];
34 double max_acc = distrib_acc_[distvec.size() - 1];
35 for (
size_t i = 0; i < distvec.size(); i++) {
36 distrib_acc_[i] /= max_acc;
48 double y = x / (double)RAND_MAX;
51 for (; i < distrib_acc_.size() && y > distrib_acc_[i]; ++i)
54 assert(i <= distrib_acc_.size());
Definition: discrete_distribution.hh:13
size_t operator()(size_t x)
get random number
Definition: discrete_distribution.hh:47
DiscreteDistribution(const std::vector< double > &distvec)
Construct with distribution vector.
Definition: discrete_distribution.hh:24
Definition: aligner.cc:15