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)388948Sdlwlong 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)498948Sdlwfloat rand_(iarg) 508948Sdlw long *iarg; 518948Sdlw { 528948Sdlw if (*iarg) srand((int)*iarg); 538948Sdlw return( (float)(rand())/(float)RANDMAX ); 548948Sdlw } 558948Sdlw drand_(iarg)568948Sdlwdouble drand_(iarg) 578948Sdlw long *iarg; 588948Sdlw { 598948Sdlw if (*iarg) srand((int)*iarg); 608948Sdlw return( (double)(rand())/(double)RANDMAX ); 618948Sdlw } 62