• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <math.h>
2 #include <stdlib.h>
3 
4 #define M_2PI (M_PI*2)
5 
box_muler(int min,int max)6 int box_muler(int min, int max)
7 {
8 	double u1, u2, z;
9 	int i;
10 	int ave;
11 	int range;
12 	int ZZ;
13 	if (min >= max) {
14 		return (-1);
15 	}
16 	range = max - min;
17 	ave = range / 2;
18 	for (i = 0; i < 10; i++) {
19 		u1 = ((double)(random() % 1000000)) / 1000000;
20 		u2 = ((double)(random() % 1000000)) / 1000000;
21 		z = sqrt(-2.0 * log(u1)) * cos(M_2PI * u2);
22 		ZZ = min + (ave + (z * (ave / 4)));
23 		if (ZZ >= min && ZZ < max) {
24 			return (ZZ);
25 		}
26 	}
27 	return (-1);
28 }
29