mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 16:05:44 -07:00
The Twiddle shuffling algorithm was theoretically parity-unbalanced:
it performed a fixed number of shuffling moves, and on each one it had a 2/3 chance of flipping the permutation parity and a 1/3 chance of keeping it the same. Markov analysis shows that over a run of 1500-odd shuffle moves this will end up being an undetectably small actual bias in the parity of the generated grid, but it offends my sense of pedantry nonetheless so here's a small change to make the number of shuffling moves itself have randomly chosen parity. The parity of generated grids should now be _exactly_ 50:50. [originally from svn r5742]
This commit is contained in:
@ -317,7 +317,7 @@ static char *new_game_seed(game_params *params, random_state *rs,
|
||||
* and simply shuffle the grid by making a long sequence of
|
||||
* randomly chosen moves.
|
||||
*/
|
||||
total_moves = w*h*n*n*2;
|
||||
total_moves = w*h*n*n*2 + random_upto(rs, 1);
|
||||
for (i = 0; i < total_moves; i++) {
|
||||
int x, y;
|
||||
|
||||
|
Reference in New Issue
Block a user