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();
}
Exemplo n.º 2
0
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;
}