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