diff options
author | ache <ache@FreeBSD.org> | 2008-08-08 01:42:17 +0000 |
---|---|---|
committer | ache <ache@FreeBSD.org> | 2008-08-08 01:42:17 +0000 |
commit | 823689b09c9db6b0a03a78837e4c02b453e37d8d (patch) | |
tree | 8f6ee5f63b889dc3ddd277538eb981661d977ec6 | |
parent | c14ceb129d096f937348a276508fee6f9493f9ae (diff) | |
download | FreeBSD-src-823689b09c9db6b0a03a78837e4c02b453e37d8d.zip FreeBSD-src-823689b09c9db6b0a03a78837e4c02b453e37d8d.tar.gz |
I was confused a bit by the wrong construction with RAND_MAX
used in randomize_fd.c.
Although the max value is the same currently, RAND_MAX is for rand(),
not for random().
So move RANDOM_MAX const to the common file now, make it UL and
use in randomize_fd.c too.
(in any case its old value was 1 less then must be, as noted in
the prev. commit)
-rw-r--r-- | games/random/random.c | 6 | ||||
-rw-r--r-- | games/random/randomize_fd.c | 2 | ||||
-rw-r--r-- | games/random/randomize_fd.h | 6 |
3 files changed, 10 insertions, 4 deletions
diff --git a/games/random/random.c b/games/random/random.c index 601036f..122ce45 100644 --- a/games/random/random.c +++ b/games/random/random.c @@ -162,7 +162,7 @@ main(int argc, char *argv[]) /* Compute a random exit status between 0 and denom - 1. */ if (random_exit) - return (int)(denom * random() / ((double)RAND_MAX + 1)); + return (int)(denom * random() / RANDOM_MAX); /* * Select whether to print the first line. (Prime the pump.) @@ -170,7 +170,7 @@ main(int argc, char *argv[]) * 0 (which has a 1 / denom chance of being true), we select the * line. */ - selected = (int)(denom * random() / ((double)RAND_MAX + 1)) == 0; + selected = (int)(denom * random() / RANDOM_MAX) == 0; while ((ch = getchar()) != EOF) { if (selected) (void)putchar(ch); @@ -180,7 +180,7 @@ main(int argc, char *argv[]) err(2, "stdout"); /* Now see if the next line is to be printed. */ - selected = (int)(denom * random() / ((double)RAND_MAX + 1)) == 0; + selected = (int)(denom * random() / RANDOM_MAX) == 0; } } if (ferror(stdin)) diff --git a/games/random/randomize_fd.c b/games/random/randomize_fd.c index b60c53c..e1011fb 100644 --- a/games/random/randomize_fd.c +++ b/games/random/randomize_fd.c @@ -202,7 +202,7 @@ randomize_fd(int fd, int type, int unique, double denom) } for (i = numnode; i > 0; i--) { - selected = ((int)denom * random())/(((double)RAND_MAX + 1) / numnode); + selected = ((int)denom * random())/(RANDOM_MAX / numnode); for (j = 0, prev = n = rand_root; n != NULL; j++, prev = n, n = n->next) { if (j == selected) { diff --git a/games/random/randomize_fd.h b/games/random/randomize_fd.h index 5b50e62..6f9fac2 100644 --- a/games/random/randomize_fd.h +++ b/games/random/randomize_fd.h @@ -29,6 +29,12 @@ #ifndef __RANDOMIZE_FD__ #define __RANDOMIZE_FD__ +/* + * The random() function is defined to return values between 0 and + * 2^31 - 1 inclusive in random(3). + */ +#define RANDOM_MAX 0x80000000UL + #define RANDOM_TYPE_UNSET 0 #define RANDOM_TYPE_LINES 1 #define RANDOM_TYPE_WORDS 2 |