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