xref: /plan9/sys/src/libc/port/frand.c (revision d9306527b4a7229dcf0cf3c58aed36bb9da82854)
1*d9306527SDavid du Colombier #include	<u.h>
2*d9306527SDavid du Colombier #include	<libc.h>
3*d9306527SDavid du Colombier 
4*d9306527SDavid du Colombier #define	MASK	0x7fffffffL
5*d9306527SDavid du Colombier #define	NORM	(1.0/(1.0+MASK))
6*d9306527SDavid du Colombier 
7*d9306527SDavid du Colombier double
frand(void)8*d9306527SDavid du Colombier frand(void)
9*d9306527SDavid du Colombier {
10*d9306527SDavid du Colombier 	double x;
11*d9306527SDavid du Colombier 
12*d9306527SDavid du Colombier 	do {
13*d9306527SDavid du Colombier 		x = lrand() * NORM;
14*d9306527SDavid du Colombier 		x = (x + lrand()) * NORM;
15*d9306527SDavid du Colombier 	} while(x >= 1);
16*d9306527SDavid du Colombier 	return x;
17*d9306527SDavid du Colombier }
18