From e940ac30681579d41bccd3be31d3d57d32941465 Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Wed, 17 Apr 2024 20:29:11 +0800 Subject: [PATCH] some fix --- src/random.cpp | 4 ++-- tests/70_random.py | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/random.cpp b/src/random.cpp index 80eb7055..fa9201fb 100644 --- a/src/random.cpp +++ b/src/random.cpp @@ -109,9 +109,9 @@ struct mt19937{ /* generates a random number on [a, b]-interval */ int64_t randint(int64_t a, int64_t b){ - uint32_t delta = b - a + 1; + uint64_t delta = b - a + 1; if(delta < 0x80000000UL){ - return a + next_uint32() % delta; + return a + next_uint32() % (uint32_t)delta; }else{ return a + next_uint64() % delta; } diff --git a/tests/70_random.py b/tests/70_random.py index 7a4e3e55..9ab902dc 100644 --- a/tests/70_random.py +++ b/tests/70_random.py @@ -54,5 +54,16 @@ for i in range(len(seq)): actual_w = res.count(seq[i]) / k assert abs(actual_w - weights[i]) < max_error +# test seed +from random import randint, seed +seed(7) +a = randint(1, 100) +b = randint(-2**60, 1) +c = randint(50, 100) +assert (a, b, c) == (16, -418020281577586157, 76) +seed(7) +assert a == randint(1, 100) +assert b == randint(-2**60, 1) +assert c == randint(50, 100) \ No newline at end of file