xref: /csrg-svn/usr.bin/f77/libF77/rand_.c (revision 41868)
18948Sdlw /*
222972Skre  * Copyright (c) 1980 Regents of the University of California.
322972Skre  * All rights reserved.  The Berkeley software License Agreement
422972Skre  * specifies the terms and conditions for redistribution.
58948Sdlw  *
6*41868Sbostic  *	@(#)rand_.c	5.4	05/13/90
722979Skre  *
88948Sdlw  * Routines to return random values
98948Sdlw  *
108948Sdlw  * calling sequence:
118948Sdlw  *	double precision d, drand
128948Sdlw  *	i = irand(iflag)
138948Sdlw  *	x = rand(iflag)
148948Sdlw  *	d = drand(iflag)
158948Sdlw  * where:
168948Sdlw  *	If arg is 1, generator is restarted. If arg is 0, next value
178948Sdlw  *	is returned. Any other arg is a new seed for the generator.
188948Sdlw  *	Integer values will range from 0 thru 2147483647.
198948Sdlw  *	Real values will range from 0.0 thru 1.0
208948Sdlw  *	(see rand(3))
218948Sdlw  */
228948Sdlw 
23*41868Sbostic #if	defined(vax) || defined(tahoe) || defined(hp300)
248948Sdlw #define	RANDMAX		2147483647
2529933Ssam #else	vax || tahoe
268948Sdlw #if	pdp11
278948Sdlw #define	RANDMAX		32767
288948Sdlw #else	pdp11
298948Sdlw 	UNKNOWN MACHINE!
308948Sdlw #endif	pdp11
3129933Ssam #endif	vax || tahoe
328948Sdlw 
338948Sdlw long irand_(iarg)
348948Sdlw long *iarg;
358948Sdlw {
368948Sdlw 	if (*iarg) srand((int)*iarg);
378948Sdlw #if	pdp11
388948Sdlw 	return(( ((long)rand()) << 16) | rand());
398948Sdlw #else	pdp11
408948Sdlw 	return( rand() );
418948Sdlw #endif	pdp11
428948Sdlw }
438948Sdlw 
448948Sdlw float rand_(iarg)
458948Sdlw long *iarg;
468948Sdlw {
478948Sdlw 	if (*iarg) srand((int)*iarg);
488948Sdlw 	return( (float)(rand())/(float)RANDMAX );
498948Sdlw }
508948Sdlw 
518948Sdlw double drand_(iarg)
528948Sdlw long *iarg;
538948Sdlw {
548948Sdlw 	if (*iarg) srand((int)*iarg);
558948Sdlw 	return( (double)(rand())/(double)RANDMAX );
568948Sdlw }
57