diff options
author | Vito Caputo <vcaputo@pengaru.com> | 2022-07-17 22:52:00 -0700 |
---|---|---|
committer | Vito Caputo <vcaputo@pengaru.com> | 2022-07-18 01:06:05 -0700 |
commit | af21b876efde47274a36d8a13d2c7503034227d0 (patch) | |
tree | 131358787058f953270fa388cc46e77389e9ddfd /src/modules/checkers | |
parent | 209b11f99c801141b79802cd6c23a2b568286f75 (diff) |
til: wire seed up to til randomizers
til_setting_desc_t.random() and til_module_randomize_setup() now
take seeds.
Note they are not taking a pointer to a shared seed, but instead
receive the seed by value.
If a caller wishes the seed to evolve on every invocation into
these functions, it should simply insert a rand_r(&seed) in
producing the supplied seed value.
Within a given randomizer, the seed evolves when appropriate.
But isolating the effects by default seems appropriate, so
callers can easily have determinism within their respective scope
regardless of how much nested random use occurs.
Diffstat (limited to 'src/modules/checkers')
-rw-r--r-- | src/modules/checkers/checkers.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/modules/checkers/checkers.c b/src/modules/checkers/checkers.c index 8b30445..7eee608 100644 --- a/src/modules/checkers/checkers.c +++ b/src/modules/checkers/checkers.c @@ -100,7 +100,7 @@ static til_module_context_t * checkers_create_context(unsigned seed, unsigned ti const til_module_t *module = ctxt->setup.fill_module; til_setup_t *module_setup = NULL; - (void) til_module_randomize_setup(module, &module_setup, NULL); + (void) til_module_randomize_setup(module, seed, &module_setup, NULL); /* since checkers is already threaded, create an n_cpus=1 context per-cpu */ for (unsigned i = 0; i < n_cpus; i++) /* TODO: errors */ @@ -236,7 +236,7 @@ static void checkers_render_fragment(til_module_context_t *context, unsigned tic /* TODO: migrate to libtil */ -static char * checkers_random_color(void) +static char * checkers_random_color(unsigned seed) { /* til should probably have a common randomize color helper for this with a large collection of * reasonable colors, and maybe even have themed palettes one can choose from... */ @@ -250,7 +250,7 @@ static char * checkers_random_color(void) "#ff00ff", }; - return strdup(colors[rand() % nelems(colors)]); + return strdup(colors[seed % nelems(colors)]); } |