blob: 50cc5177d15c1f68e209c8060c5d77ed8da4e6c5 [file] [log] [blame]
#include <math.h>
#include <stdlib.h>
#define M_2PI (M_PI*2)
int box_muler(int min, int max)
{
double u1,u2,z;
int i;
int ave;
int range;
int ZZ;
if (min >= max) {
return (-1);
}
range = max - min;
ave = range/2;
for (i = 0 ; i< 10 ; i++) {
u1 = ((double)(random() % 1000000))/ 1000000;
u2 = ((double)(random() % 1000000))/ 1000000;
z = sqrt( -2.0 * log(u1) ) * cos ( M_2PI * u2 );
ZZ = min + (ave + (z*(ave/4)));
if (ZZ >= min && ZZ < max) {
return (ZZ);
}
}
return (-1);
}