X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/07871354bfa8bbbacb6c6a1966f25b596119c146..d34decd2b2b88240cf4ca68a2a5feb7bf36de6e7:/lcrand.c diff --git a/lcrand.c b/lcrand.c index 3686e17..05c3aae 100644 --- a/lcrand.c +++ b/lcrand.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: lcrand.c,v 1.1 1999/12/10 23:15:27 mdw Exp $ + * $Id: lcrand.c,v 1.3 2000/06/17 11:29:03 mdw Exp $ * * Simple linear congruential generator * @@ -30,6 +30,12 @@ /*----- Revision history --------------------------------------------------* * * $Log: lcrand.c,v $ + * Revision 1.3 2000/06/17 11:29:03 mdw + * Add the flags word to the generic generator. + * + * Revision 1.2 1999/12/13 15:34:01 mdw + * Add support for seeding from a generic pseudorandom source. + * * Revision 1.1 1999/12/10 23:15:27 mdw * Noncryptographic random number generator. * @@ -201,6 +207,7 @@ static int gmisc(grand *r, unsigned op, ...) case GRAND_CHECK: case GRAND_SEEDINT: case GRAND_SEEDUINT32: + case GRAND_SEEDRAND: rc = 1; break; default: @@ -214,6 +221,12 @@ static int gmisc(grand *r, unsigned op, ...) case GRAND_SEEDUINT32: g->x = va_arg(ap, uint32); break; + case GRAND_SEEDRAND: { + grand *rr = va_arg(ap, grand *); + uint32 x; + do x = rr->ops->word(rr); while (x >= P || x == LCRAND_FIXEDPT); + g->x = x; + } break; default: GRAND_BADOP; break; @@ -247,7 +260,7 @@ static uint32 grange(grand *r, uint32 l) static const grand_ops gops = { "lcrand", - LCRAND_P, + LCRAND_P, 0, gmisc, gdestroy, graw, gbyte, grand_word, grange, grand_fill };