1 /* 2 * Copyright (c) 1980 Regents of the University of California. 3 * All rights reserved. The Berkeley software License Agreement 4 * specifies the terms and conditions for redistribution. 5 * 6 * @(#)rand_.c 5.4 05/13/90 7 * 8 * Routines to return random values 9 * 10 * calling sequence: 11 * double precision d, drand 12 * i = irand(iflag) 13 * x = rand(iflag) 14 * d = drand(iflag) 15 * where: 16 * If arg is 1, generator is restarted. If arg is 0, next value 17 * is returned. Any other arg is a new seed for the generator. 18 * Integer values will range from 0 thru 2147483647. 19 * Real values will range from 0.0 thru 1.0 20 * (see rand(3)) 21 */ 22 23 #if defined(vax) || defined(tahoe) || defined(hp300) 24 #define RANDMAX 2147483647 25 #else vax || tahoe 26 #if pdp11 27 #define RANDMAX 32767 28 #else pdp11 29 UNKNOWN MACHINE! 30 #endif pdp11 31 #endif vax || tahoe 32 33 long irand_(iarg) 34 long *iarg; 35 { 36 if (*iarg) srand((int)*iarg); 37 #if pdp11 38 return(( ((long)rand()) << 16) | rand()); 39 #else pdp11 40 return( rand() ); 41 #endif pdp11 42 } 43 44 float rand_(iarg) 45 long *iarg; 46 { 47 if (*iarg) srand((int)*iarg); 48 return( (float)(rand())/(float)RANDMAX ); 49 } 50 51 double drand_(iarg) 52 long *iarg; 53 { 54 if (*iarg) srand((int)*iarg); 55 return( (double)(rand())/(double)RANDMAX ); 56 } 57