Gerando o exato distribuição uniforme de todos os quebra-cabeças do sudoku pode ser feita dessa maneira: você pode gerar aleatoriamente uma grade 9x9 e mantê-la apenas se for uma grade correta do sudoku; caso contrário, tente novamente.
917 apenas gerando uma grade 8x8 aleatória e preenchendo as duas linhas restantes. Essa ainda é uma distribuição aleatória, mas ainda muito ineficiente.
[1,2,..9]9!
Talvez você veja onde eu estou indo: responder a esse problema de uma maneira inteligente provavelmente o levará a pensar sobre as simetrias subjacentes das grades do sudoku. Muito trabalho foi feito nessa direção para provar o fato de que 17 é o número mínimo de pistas para um sudoku ( consulte este artigo ) e você pode ir aqui para ver esta enumeração precisa de 5.472.730.538 classes de 3.359.232 grades semelhantes, que as utiliza simetrias:
- Permutações de dígitos
- Permutações de linhas (as faixas e as linhas dentro de cada banda)
- O mesmo vale para colunas
- Transposição
9 ! , 64, 64, 2
EDIT: para adaptar isso a quebra-cabeças incompletos, você pode escolher aleatoriamente um subconjunto de sua grade, verificar se a solução é exclusiva com um solucionador de sudoku e tentar novamente, se não. Esta não é uma distribuição uniforme, pois o número de quebra-cabeças incompletos com uma solução única pode ser diferente para duas grades. (Eu ficaria muito surpreso caso contrário)