#include"generator.h" #include #include generator::generator(int MeanEventsPerUnitTime) { seed=1; mean=MeanEventsPerUnitTime; } void generator::SetMean(int MeanEventsPerUnitTime) { mean=MeanEventsPerUnitTime; } int generator::GetNumberOfEvents() { double limit=exp(-mean); double product=GetRandomNumber(); int count=0; while (product > limit) { count++; product*=GetRandomNumber(); } return count; } double generator::GetRandomNumber() { double max = INT_MAX + 1.0; seed = seed * 2743 + 5923; //generate a pseudorandom int. if (seed < 0) seed = seed + max; //shift back into the positive numbers. return(seed/max); //scale to the range (0,1) }