Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/games/fish fish: use arc4random_uniform for drawing random n...



details:   https://anonhg.NetBSD.org/src/rev/3b34da307dbf
branches:  trunk
changeset: 378975:3b34da307dbf
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sun May 02 12:24:59 2021 +0000

description:
fish: use arc4random_uniform for drawing random numbers

Thanks nia@ for the hint.

diffstat:

 games/fish/fish.c |  35 ++++++++++-------------------------
 1 files changed, 10 insertions(+), 25 deletions(-)

diffs (121 lines):

diff -r 09fa214bff45 -r 3b34da307dbf games/fish/fish.c
--- a/games/fish/fish.c Sun May 02 11:18:11 2021 +0000
+++ b/games/fish/fish.c Sun May 02 12:24:59 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: fish.c,v 1.24 2021/05/01 21:10:57 rillig Exp $ */
+/*     $NetBSD: fish.c,v 1.25 2021/05/02 12:24:59 rillig Exp $ */
 
 /*-
  * Copyright (c) 1990, 1993
@@ -42,7 +42,7 @@
 #if 0
 static char sccsid[] = "@(#)fish.c     8.1 (Berkeley) 5/31/93";
 #else
-__RCSID("$NetBSD: fish.c,v 1.24 2021/05/01 21:10:57 rillig Exp $");
+__RCSID("$NetBSD: fish.c,v 1.25 2021/05/02 12:24:59 rillig Exp $");
 #endif
 #endif /* not lint */
 
@@ -54,7 +54,6 @@ static char sccsid[] = "@(#)fish.c    8.1 (
 #include <stdlib.h>
 #include <unistd.h>
 #include <string.h>
-#include <time.h>
 #include <err.h>
 #include "pathnames.h"
 
@@ -87,7 +86,6 @@ static int gofish(int, int, int *);
 static void goodmove(int, int, int *, int *);
 static void init(void);
 static void instructions(void);
-static int nrandom(int);
 static void printhand(const int *);
 static void printplayer(int);
 static int promove(void);
@@ -112,11 +110,10 @@ main(int argc, char **argv)
                        usage();
                }
 
-       srandom(time(NULL));
        instructions();
        init();
 
-       if (nrandom(2) == 1) {
+       if (arc4random_uniform(2) == 1) {
                printplayer(COMPUTER);
                (void)printf("get to start.\n");
                goto istart;
@@ -200,11 +197,11 @@ usermove(void)
                        continue;
                }
 
-               if (nrandom(3) == 1)
+               if (arc4random_uniform(3) == 1)
                        (void)printf("You don't have any of those!\n");
                else
                        (void)printf("You don't have any %s's!\n", cards[n]);
-               if (nrandom(4) == 1)
+               if (arc4random_uniform(4) == 1)
                        (void)printf("No cheating!\n");
                (void)printf("Guess again.\n");
        }
@@ -240,7 +237,7 @@ promove(void)
                        userasked[i] = 0;
                        return(i);
                }
-       if (nrandom(3) == 1) {
+       if (arc4random_uniform(3) == 1) {
                for (i = 0;; ++i)
                        if (comphand[i] && comphand[i] != CARDS) {
                                max = i;
@@ -252,7 +249,7 @@ promove(void)
                                max = i;
                return(max);
        } 
-       if (nrandom(1024) == 0723) {
+       if (arc4random_uniform(1024) == 0723) {
                for (i = 0; i < RANKS; ++i)
                        if (userhand[i] && comphand[i])
                                return(i);
@@ -341,11 +338,11 @@ chkwinner(int player, const int *hand)
        (void)printf("\nI have %d, you have %d.\n", cb, ub);
        if (ub > cb) {
                (void)printf("\nYou win!!!\n");
-               if (nrandom(1024) == 0723)
+               if (arc4random_uniform(1024) == 0723)
                        (void)printf("Cheater, cheater, pumpkin eater!\n");
        } else if (cb > ub) {
                (void)printf("\nI win!!!\n");
-               if (nrandom(1024) == 0723)
+               if (arc4random_uniform(1024) == 0723)
                        (void)printf("Hah!  Stupid peasant!\n");
        } else
                (void)printf("\nTie!\n");
@@ -419,7 +416,7 @@ init(void)
        for (i = 0; i < TOTCARDS; ++i)
                deck[i] = i % RANKS;
        for (i = 0; i < TOTCARDS - 1; ++i) {
-               j = nrandom(TOTCARDS-i);
+               j = arc4random_uniform(TOTCARDS-i);
                if (j == 0)
                        continue;
                temp = deck[i];
@@ -432,18 +429,6 @@ init(void)
        }
 }
 
-static int
-nrandom(int n)
-{
-       long r;
-
-       for (;;) {
-               r = random();
-               if (r < RANDOM_MAX - RANDOM_MAX % n)
-                       return (int)(r % n);
-       }
-}
-
 static void
 instructions(void)
 {



Home | Main Index | Thread Index | Old Index