X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=cube.c;h=6fef4d10f95588faf08830809d635e8c7761a3e1;hb=fa7ef572c782c9394f60202d950d3380dfdce5c3;hp=1bc08f62ffec7f19389761a95778ecdd15c31bdf;hpb=4b9d75525238972f1ca30e37034c57c523a3fda1;p=sgt-puzzles.git diff --git a/cube.c b/cube.c index 1bc08f6..6fef4d1 100644 --- a/cube.c +++ b/cube.c @@ -511,15 +511,7 @@ char *new_game_seed(game_params *params) for (i = 0; i < data.nclasses; i++) { for (j = 0; j < facesperclass; j++) { - unsigned long divisor = RAND_MAX / data.nsquares[i]; - unsigned long max = divisor * data.nsquares[i]; - unsigned long n; - - do { - n = rand(); - } while (n >= max); - - n /= divisor; + int n = rand_upto(data.nsquares[i]); assert(!flags[data.gridptrs[i][n]]); flags[data.gridptrs[i][n]] = TRUE; @@ -529,7 +521,7 @@ char *new_game_seed(game_params *params) * better data structure for this, but for such small * numbers it hardly seems worth the effort. */ - while ((int)n < data.nsquares[i]-1) { + while (n < data.nsquares[i]-1) { data.gridptrs[i][n] = data.gridptrs[i][n+1]; n++; } @@ -567,19 +559,7 @@ char *new_game_seed(game_params *params) /* * Choose a non-blue square for the polyhedron. */ - { - unsigned long divisor = RAND_MAX / m; - unsigned long max = divisor * m; - unsigned long n; - - do { - n = rand(); - } while (n >= max); - - n /= divisor; - - sprintf(p, ":%d", data.gridptrs[0][n]); - } + sprintf(p, ":%d", rand_upto(m)); sfree(data.gridptrs[0]); sfree(flags);