xref: /csrg-svn/usr.bin/f77/libF77/rand_.c (revision 47940)
1*47940Sbostic /*-
2*47940Sbostic  * Copyright (c) 1980 The Regents of the University of California.
3*47940Sbostic  * All rights reserved.
4*47940Sbostic  *
5*47940Sbostic  * %sccs.include.proprietary.c%
6*47940Sbostic  */
7*47940Sbostic 
8*47940Sbostic #ifndef lint
9*47940Sbostic static char sccsid[] = "@(#)rand_.c	5.5 (Berkeley) 04/12/91";
10*47940Sbostic #endif /* not lint */
11*47940Sbostic 
128948Sdlw /*
138948Sdlw  * Routines to return random values
148948Sdlw  *
158948Sdlw  * calling sequence:
168948Sdlw  *	double precision d, drand
178948Sdlw  *	i = irand(iflag)
188948Sdlw  *	x = rand(iflag)
198948Sdlw  *	d = drand(iflag)
208948Sdlw  * where:
218948Sdlw  *	If arg is 1, generator is restarted. If arg is 0, next value
228948Sdlw  *	is returned. Any other arg is a new seed for the generator.
238948Sdlw  *	Integer values will range from 0 thru 2147483647.
248948Sdlw  *	Real values will range from 0.0 thru 1.0
258948Sdlw  *	(see rand(3))
268948Sdlw  */
278948Sdlw 
2841868Sbostic #if	defined(vax) || defined(tahoe) || defined(hp300)
298948Sdlw #define	RANDMAX		2147483647
3029933Ssam #else	vax || tahoe
318948Sdlw #if	pdp11
328948Sdlw #define	RANDMAX		32767
338948Sdlw #else	pdp11
348948Sdlw 	UNKNOWN MACHINE!
358948Sdlw #endif	pdp11
3629933Ssam #endif	vax || tahoe
378948Sdlw 
irand_(iarg)388948Sdlw long irand_(iarg)
398948Sdlw long *iarg;
408948Sdlw {
418948Sdlw 	if (*iarg) srand((int)*iarg);
428948Sdlw #if	pdp11
438948Sdlw 	return(( ((long)rand()) << 16) | rand());
448948Sdlw #else	pdp11
458948Sdlw 	return( rand() );
468948Sdlw #endif	pdp11
478948Sdlw }
488948Sdlw 
rand_(iarg)498948Sdlw float rand_(iarg)
508948Sdlw long *iarg;
518948Sdlw {
528948Sdlw 	if (*iarg) srand((int)*iarg);
538948Sdlw 	return( (float)(rand())/(float)RANDMAX );
548948Sdlw }
558948Sdlw 
drand_(iarg)568948Sdlw double drand_(iarg)
578948Sdlw long *iarg;
588948Sdlw {
598948Sdlw 	if (*iarg) srand((int)*iarg);
608948Sdlw 	return( (double)(rand())/(double)RANDMAX );
618948Sdlw }
62