[gegl] random: ensure we pick different primes



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]