aboutsummaryrefslogtreecommitdiff
path: root/cube.c
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2004-05-03 09:10:52 +0000
committerSimon Tatham <anakin@pobox.com>2004-05-03 09:10:52 +0000
commitaa9a8e8c7eecc2de77690b872931e88951622813 (patch)
treecfca97dbf8e19fc3e62c2f6f6689bca480f5ad21 /cube.c
parent6e42ddd31b5ca71f48c6260b01fc49b2451d0a56 (diff)
downloadpuzzles-aa9a8e8c7eecc2de77690b872931e88951622813.zip
puzzles-aa9a8e8c7eecc2de77690b872931e88951622813.tar.gz
puzzles-aa9a8e8c7eecc2de77690b872931e88951622813.tar.bz2
puzzles-aa9a8e8c7eecc2de77690b872931e88951622813.tar.xz
The Windows RNG turns out to only give about 16 bits at a time. This
is (a) pretty feeble, and (b) means that although Net seeds transfer between platforms and still generate the same game, there's a suspicious discrepancy in the typical seed _generated_ by each platform. I have a better RNG kicking around in this code base already, so I'll just use it. Each midend has its own random_state, which it passes to new_game_seed() as required. A handy consequence of this is that initial seed data is now passed to midend_new(), which means that new platform implementors are unlikely to forget to seed the RNG because failure to do so causes a compile error! [originally from svn r4187]
Diffstat (limited to 'cube.c')
-rw-r--r--cube.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/cube.c b/cube.c
index 6c2658f..ccc8689 100644
--- a/cube.c
+++ b/cube.c
@@ -560,7 +560,7 @@ static void classify_grid_square_callback(void *ctx, struct grid_square *sq)
data->squareindex++;
}
-char *new_game_seed(game_params *params)
+char *new_game_seed(game_params *params, random_state *rs)
{
struct grid_data data;
int i, j, k, m, area, facesperclass;
@@ -605,7 +605,7 @@ char *new_game_seed(game_params *params)
for (i = 0; i < data.nclasses; i++) {
for (j = 0; j < facesperclass; j++) {
- int n = rand_upto(data.nsquares[i]);
+ int n = random_upto(rs, data.nsquares[i]);
assert(!flags[data.gridptrs[i][n]]);
flags[data.gridptrs[i][n]] = TRUE;
@@ -653,7 +653,7 @@ char *new_game_seed(game_params *params)
/*
* Choose a non-blue square for the polyhedron.
*/
- sprintf(p, ":%d", data.gridptrs[0][rand_upto(m)]);
+ sprintf(p, ":%d", data.gridptrs[0][random_upto(rs, m)]);
sfree(data.gridptrs[0]);
sfree(flags);