X-Git-Url: https://hackdaworld.org/gitweb/?p=physik%2Fmorpheus.git;a=blobdiff_plain;f=random.c;fp=random.c;h=5657eedeb9d3663f9941180e39104c2fdce2faa0;hp=51f6774b70503b853642dac80b979698461e49ad;hb=6ee2d4c247b82dc4aea6e9e5e6aecd7d857aaafd;hpb=4dc55f36080bc8cc78c07efe25bf3f222c3d0a9a diff --git a/random.c b/random.c index 51f6774..5657eed 100644 --- a/random.c +++ b/random.c @@ -12,18 +12,23 @@ /* global and extern variables */ extern u32 gr; extern int random_fd; +extern u32 *rand_buf,*rand_current; /* return random integer between 0 - max-1 */ u32 rand_get(u32 max) { - u32 rand_int; - if(read(random_fd,&rand_int,4)!=4) + if(rand_current==rand_buf+RAND_BUF_SIZE) { - puts("failed reading 4 bytes of random data"); - return -23; + printfd("debug: reading new random bytes\n"); + if(read(random_fd,rand_buf,RAND_BUF_SIZE)!=RAND_BUF_SIZE) + { + puts("failed reading viel bytes of random data"); + return -23; + } + rand_current=rand_buf; } /* cells numbered 0...max-1 */ - return((u32)(rand_int*(max*1.0/URAND_MAX))); + return((u32)(*(rand_current++)*(max*1.0/URAND_MAX))); } /* get z value (linear growth of probability with depths) */ @@ -40,4 +45,3 @@ u32 rand_get_lgp(int slope_nel,int start_nel,u32 z_max) return(i-1); /* return values 0...z_cell-1 */ } -