This looks way too simple to generate good quality sudoku puzzles. Does it, for example, check if the puzzle has only one solution?
What makes a board a "good" one is of course the quantity and placement of the initially displayed numbers. My code does not address that aspect. It only dabbles in randomly generating the full board so that players aren't subjected to the same pre-generated ones over and over.