Recursion for N Queens problem

Hi all,

I have code that find the solution to a N-queens problem by starting at the upper left hand corner of the board and works its way through the rows and columns. However, I would like to modify the code so that it places a queen at a random place and then starts looking for the solution at that random row and column. Any help is greatly appreciated. Here is the code I have for a four queens problem but it doesnt start with a queen at a random place.

Code :

public class EightQueens extends JApplet {
public static final int SIZE = 4; // The size of the chess board
private int[] queens = new int[SIZE]; // The queen positions
public EightQueens() {
search(0); // Search for a solution from row 0
add(new ChessBoard(), BorderLayout.CENTER);
}
/** Check if a queen can be placed at row i and column j */
private boolean isValid(int row, int column) {
for (int i = 1; i <= row; i++)
if (queens[row - i] == column // Check column
|| queens[row - i] == column - i // Check upleft diagonal
|| queens[row - i] == column + i) // Check upright diagonal
return false; // There is a conflict
return true; // No conflict
}
/** Search for a solution starting from a specified row */
private boolean search(int row) {
if (row == SIZE) // Stopping condition
return true; // A solution found to place 8 queens in 8 rows
for (int column = 0; column < SIZE; column++) {
queens[row] = column; // Place a queen at (row, column)
if (isValid(row, column) && search(row + 1))
return true; // Found, thus return true to exit for loop
}
// No solution for a queen placed at any column of this row
return false;
}