#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); }