A really clever approach is to have a single, pre-generated sudoku, shuffle each row, then shuffle each column, then shuffle every 3x3 box And then mask each number with a shuffled different number (replace all 5s with 9s, ...) Any its as if you just generated a new one, but its much faster