summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-random
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-08-22 12:37:34 +0900
committerGitHub <[email protected]>2021-08-22 12:37:34 +0900
commit0f3671044500a882d47cd992589064d04aa867b5 (patch)
tree943dbde4ca3fbd13cd110e2422bf71376347db79 /mrbgems/mruby-random
parent886055b3fb047839abe13b03dd44d9e35c35d5b0 (diff)
parent2121b6e6898df7691f79cc61966782981f56c5c9 (diff)
downloadmruby-0f3671044500a882d47cd992589064d04aa867b5.tar.gz
mruby-0f3671044500a882d47cd992589064d04aa867b5.zip
Merge pull request #5536 from dearblue/random-seed
Stirs internal state when `seed` is set in `Random`
Diffstat (limited to 'mrbgems/mruby-random')
-rw-r--r--mrbgems/mruby-random/src/random.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/mrbgems/mruby-random/src/random.c b/mrbgems/mruby-random/src/random.c
index 27fd98f82..027e7ce0b 100644
--- a/mrbgems/mruby-random/src/random.c
+++ b/mrbgems/mruby-random/src/random.c
@@ -58,12 +58,17 @@ rand_init(rand_state *t)
#endif
}
+static uint32_t rand_uint32(rand_state *state);
+
static uint32_t
rand_seed(rand_state *t, uint32_t seed)
{
uint32_t old_seed = t->seed[SEEDPOS];
rand_init(t);
t->seed[SEEDPOS] = seed;
+ for (int i = 0; i < 10; i++) {
+ rand_uint32(t);
+ }
return old_seed;
}