float RandomGenerator::rand_exp_distribution(float lambda) { if (equal(lambda,0.0) || !greater_zero(lambda) ) { lambda = 1; } boost::exponential_distribution<float> exp_dist(lambda); boost::variate_generator<base_generator_type&, boost::exponential_distribution<float> > exp_gen(generator, exp_dist); return exp_gen(); }
int main(int argc, char** argv) { srand(SEED); unsigned int* histogram = (unsigned int*)malloc(sizeof(unsigned int) * BUCKETS); memset(histogram, 0, sizeof(unsigned int) * BUCKETS); unsigned int i; float v; for(i = 0, v = exp_gen(); i < SAMPLES; i++, v=exp_gen()) { if(v < 5) histogram[(unsigned int)floor(v + 0.5)]++; else histogram[BUCKETS-1]++; } for (i = 0; i < BUCKETS; i++) printf("%d, %d\n", i, histogram[i]); return 0; }