18948Sdlw /* 2*22972Skre * Copyright (c) 1980 Regents of the University of California. 3*22972Skre * All rights reserved. The Berkeley software License Agreement 4*22972Skre * specifies the terms and conditions for redistribution. 58948Sdlw * 6*22972Skre * @(#)rand_.c 5.1 06/07/85 7*22972Skre */ 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 238948Sdlw #if vax 248948Sdlw #define RANDMAX 2147483647 258948Sdlw #else vax 268948Sdlw #if pdp11 278948Sdlw #define RANDMAX 32767 288948Sdlw #else pdp11 298948Sdlw UNKNOWN MACHINE! 308948Sdlw #endif pdp11 318948Sdlw #endif vax 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