[gegl] random: ensure we pick different primes
- From: Ãyvind KolÃs <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] random: ensure we pick different primes
- Date: Sun, 16 Dec 2012 15:44:15 +0000 (UTC)
commit 738ba1b80dda46684dcd0583b45d185d3684c6f2
Author: Ãyvind KolÃs <pippin gimp org>
Date: Mon Dec 17 02:43:30 2012 +1100
random: ensure we pick different primes
With three levels, picking the same prime twice would cancel out two of the
tables.
gegl/gegl-random.c | 11 +++++++++--
1 files changed, 9 insertions(+), 2 deletions(-)
---
diff --git a/gegl/gegl-random.c b/gegl/gegl-random.c
index 60b4bf3..128ccbc 100644
--- a/gegl/gegl-random.c
+++ b/gegl/gegl-random.c
@@ -75,8 +75,15 @@ gegl_random_set_new (int seed)
for (i = 0; i < set->tables; i++)
{
int j;
-
- set->prime[i] = primes[g_rand_int_range (gr, 0, G_N_ELEMENTS (primes) - 2)];
+ int found = 0;
+ do
+ {
+ found = 0;
+ set->prime[i] = primes[g_rand_int_range (gr, 0, G_N_ELEMENTS (primes) - 2)];
+ for (j = 0; j < i; j++)
+ if (set->prime[j] == set->prime[i])
+ found = 1;
+ } while (found);
/* it might be possible to share a set of random data between sets
* and rejuggle the prime sizes chosen and keep an additional offset
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]