Quoth Elie Le Vaillant <eolie...@disroot.org>: > --- > libutil/random.c | 23 +++++++++++------------ > 1 file changed, 11 insertions(+), 12 deletions(-) > > diff --git a/libutil/random.c b/libutil/random.c > index 72385fb..15082e5 100644 > --- a/libutil/random.c > +++ b/libutil/random.c > @@ -21,7 +21,7 @@ rng32(void) > } > > void > -rng32_randomseed() > +rng32_seed() > { > return; > } > @@ -41,8 +41,8 @@ rng32(void) > uint64_t oldstate = globalstate; > uint32_t r, v; > > - *state *= 6364136223846793005ULL; > - *state += globalid; /* we must have it as odd */ > + globalstate *= 6364136223846793005ULL; > + globalstate += 1442695040888963407ULL; /* we must have it as odd */ > > r = oldstate >> (64 - 5); > v = (oldstate ^ (oldstate >> 18)) >> (32 - 5); > @@ -51,12 +51,11 @@ rng32(void) > } > > void > -rng32_randomseed(void) > +rng32_seed(void) > { > struct timespec ts; > clock_gettime(CLOCK_REALTIME, &ts); > globalstate = (intptr_t)&printf ^ ts.tv_sec ^ ((unsigned > long)ts.tv_nsec * 0xAC5533CD); > - globalid = 1442695040888963407ULL; > } > > #endif /* standalone, PCG construction */ > @@ -70,15 +69,15 @@ rng32_bounded(uint32_t bound) { > uint32_t x = rng32(); > uint64_t m = (uint64_t)x * (uint64_t)bound; > uint32_t l = (uint32_t)m; > - if (l < range) { > - uint32_t t = -range; > - if (t >= range) { > - t -= range; > - if (t >= range) > - t %= range; > + if (l < bound) { > + uint32_t t = -bound; > + if (t >= bound) { > + t -= bound; > + if (t >= bound) > + t %= bound; > } > while (l < t) { > - x = rng32(state, id); > + x = rng32(); > m = (uint64_t)x * (uint64_t)bound; > l = (uint32_t)m; > } > -- > 2.47.1 > > >
Re: [hackers] [PATCH] libutil/random: fix conflict between versions
Roberto E . Vargas Caballero Fri, 20 Dec 2024 12:40:13 -0800
- [hackers] [PATCH] libutil/random: fix conflic... Elie Le Vaillant
- Re: [hackers] [PATCH] libutil/random: fi... Roberto E . Vargas Caballero
- Re: [hackers] [PATCH] libutil/random: fi... Roberto E . Vargas Caballero
- Re: [hackers] [PATCH] libutil/random... Hiltjo Posthuma
- Re: [hackers] [PATCH] libutil/random... Elie Le Vaillant