summaryrefslogtreecommitdiff
path: root/extmod/modurandom.c
diff options
context:
space:
mode:
authorLéa Saviot <lea.saviot@numworks.com>2019-04-11 11:03:05 +0200
committerDamien George <damien.p.george@gmail.com>2019-04-16 14:54:36 +1000
commita6e5846ba75d20df1795f75423535d9bc280c804 (patch)
tree01f20e48feb03b0a95dc8028e8429f0acdf7abea /extmod/modurandom.c
parentfd58136d6bffe422f4afb6bc08973ecfb6ff8f1d (diff)
extmod/modurandom: Add init method to seed the Yasmarang generator.
In CPython the random module is seeded differently on each import, and so this new macro option MICROPY_PY_URANDOM_SEED_INIT_FUNC allows to implement such a behaviour.
Diffstat (limited to 'extmod/modurandom.c')
-rw-r--r--extmod/modurandom.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/extmod/modurandom.c b/extmod/modurandom.c
index 1512a3fd4..2e667570d 100644
--- a/extmod/modurandom.c
+++ b/extmod/modurandom.c
@@ -200,8 +200,19 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_urandom_uniform_obj, mod_urandom_uniform);
#endif // MICROPY_PY_URANDOM_EXTRA_FUNCS
+#ifdef MICROPY_PY_URANDOM_SEED_INIT_FUNC
+STATIC mp_obj_t mod_urandom___init__() {
+ mod_urandom_seed(MP_OBJ_NEW_SMALL_INT(MICROPY_PY_URANDOM_SEED_INIT_FUNC));
+ return mp_const_none;
+}
+STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_urandom___init___obj, mod_urandom___init__);
+#endif
+
STATIC const mp_rom_map_elem_t mp_module_urandom_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_urandom) },
+ #ifdef MICROPY_PY_URANDOM_SEED_INIT_FUNC
+ { MP_ROM_QSTR(MP_QSTR___init__), MP_ROM_PTR(&mod_urandom___init___obj) },
+ #endif
{ MP_ROM_QSTR(MP_QSTR_getrandbits), MP_ROM_PTR(&mod_urandom_getrandbits_obj) },
{ MP_ROM_QSTR(MP_QSTR_seed), MP_ROM_PTR(&mod_urandom_seed_obj) },
#if MICROPY_PY_URANDOM_EXTRA_FUNCS