xref: /csrg-svn/usr.bin/f77/libF77/rand_.c (revision 8948)
1*8948Sdlw /*
2*8948Sdlw char id_rand[] = "@(#)rand_.c	1.1";
3*8948Sdlw  *
4*8948Sdlw  * Routines to return random values
5*8948Sdlw  *
6*8948Sdlw  * calling sequence:
7*8948Sdlw  *	double precision d, drand
8*8948Sdlw  *	i = irand(iflag)
9*8948Sdlw  *	x = rand(iflag)
10*8948Sdlw  *	d = drand(iflag)
11*8948Sdlw  * where:
12*8948Sdlw  *	If arg is 1, generator is restarted. If arg is 0, next value
13*8948Sdlw  *	is returned. Any other arg is a new seed for the generator.
14*8948Sdlw  *	Integer values will range from 0 thru 2147483647.
15*8948Sdlw  *	Real values will range from 0.0 thru 1.0
16*8948Sdlw  *	(see rand(3))
17*8948Sdlw  */
18*8948Sdlw 
19*8948Sdlw #if	vax
20*8948Sdlw #define	RANDMAX		2147483647
21*8948Sdlw #else	vax
22*8948Sdlw #if	pdp11
23*8948Sdlw #define	RANDMAX		32767
24*8948Sdlw #else	pdp11
25*8948Sdlw 	UNKNOWN MACHINE!
26*8948Sdlw #endif	pdp11
27*8948Sdlw #endif	vax
28*8948Sdlw 
29*8948Sdlw long irand_(iarg)
30*8948Sdlw long *iarg;
31*8948Sdlw {
32*8948Sdlw 	if (*iarg) srand((int)*iarg);
33*8948Sdlw #if	pdp11
34*8948Sdlw 	return(( ((long)rand()) << 16) | rand());
35*8948Sdlw #else	pdp11
36*8948Sdlw 	return( rand() );
37*8948Sdlw #endif	pdp11
38*8948Sdlw }
39*8948Sdlw 
40*8948Sdlw float rand_(iarg)
41*8948Sdlw long *iarg;
42*8948Sdlw {
43*8948Sdlw 	if (*iarg) srand((int)*iarg);
44*8948Sdlw 	return( (float)(rand())/(float)RANDMAX );
45*8948Sdlw }
46*8948Sdlw 
47*8948Sdlw double drand_(iarg)
48*8948Sdlw long *iarg;
49*8948Sdlw {
50*8948Sdlw 	if (*iarg) srand((int)*iarg);
51*8948Sdlw 	return( (double)(rand())/(double)RANDMAX );
52*8948Sdlw }
53