| 4 |  | */ | 
| 5 |  | #ifndef _RAD_RANDOM_H_ | 
| 6 |  | #define _RAD_RANDOM_H_ | 
| 7 | + |  | 
| 8 | + | #include <stdlib.h> | 
| 9 | + |  | 
| 10 |  | #ifdef __cplusplus | 
| 11 |  | extern "C" { | 
| 12 |  | #endif | 
| 23 |  | #define frandom()       (rand()*(1./(RAND_MAX+.5))) | 
| 24 |  |  | 
| 25 |  | #else | 
| 23 | – | #ifdef  BSD | 
| 26 |  |  | 
| 25 | – | extern long  random(); | 
| 26 | – |  | 
| 27 | – | #define  frandom()      (random()*(1./2147483648.)) | 
| 28 | – |  | 
| 29 | – | #else | 
| 30 | – |  | 
| 31 | – | extern long  lrand48(); | 
| 32 | – | extern double  drand48(); | 
| 33 | – |  | 
| 27 |  | #define  random()       lrand48() | 
| 28 |  | #define  srandom(s)     srand48((long)(s)) | 
| 29 |  | #define  frandom()      drand48() | 
| 30 |  |  | 
| 31 |  | #endif | 
| 39 | – | #endif | 
| 32 |  |  | 
| 33 |  | extern unsigned short   *urperm; | 
| 34 |  | extern int      urmask; | 
| 35 |  |  | 
| 36 | < | #define  urand(i)       (urmask ? (urperm[(i)&urmask]+frandom())/(urmask+1) \ | 
| 36 | > | #define  urand(i)       (urmask ? (urperm[(i)&urmask]+frandom())/(urmask+1.) \ | 
| 37 |  | : frandom()) | 
| 38 |  |  | 
| 39 |  | extern int      initurand(int size); |