¿Cómo generar aleatoriamente un Sudoku usando lenguaje C?

¿Algoritmo de generación de Sudoku? De hecho, esto no es fácil de hacer, pero se me ocurrió uno cuando estaba escribiendo Sudoku. Puedes cambiarlo tú mismo. En cuanto a si este algoritmo puede generar todos los Sudoku, aún no lo he demostrado.

Principio: Si los dos números X e Y dados se intercambian por todas las filas o columnas del tablero de Sudoku dado, la matriz seguirá satisfaciendo las reglas del Sudoku. Si se dan 1 y 2, todas las columnas intercambian las posiciones de 1 y 2, y la matriz aún satisface las reglas del Sudoku.

Debido a que la evolución del tablero de ajedrez es aleatoria, equivale a generar aleatoriamente un tablero de Sudoku. El número de veces que cada evolución es mejor, más de 10 veces, garantiza que cada número haya sido cambiado.

No necesito escribir código específico, curandero...