estou tentando fazer uma lógica para sortear 10 números em uma determinada faixa defenida em uma consulta SQL, porém todos devem ser diferentes.
tentei a seguinte lógica:
// realiza a pesquisa no banco de dados para obter
// todas as questões pertinentes a um determinado tema e curso
PreparedStatement sql = conexao.prepareStatement("SELECT * FROM tb_questoes WHERE cd_tema = ? AND cd_curso = ? AND ativa = 'Sim';");
sql.setString(1,tema);
sql.setString(2,curso);
ResultSet resultquestoes = sql.executeQuery();
// obtem o número de questoes selcionadas
resultquestoes.last();
int total = resultquestoes.getRow();
int[] perguntas = new int[10];
int random = 0;
boolean sorteia = true;
// lógica para sortear os números
// e verificar se já foram sorteados
for (int i = 0; i < 10;i++){
do{
random = 1 + (int)(Math.random() * total);
for(int j = 0; j <= i; j++){
if(perguntas[j] == random)
sorteia = false;
}
} while (sorteia);
perguntas[i] = random;
}
beleza não tem nenhum erro ai porém ele demora para sortear queria saber alguma forma de limpar mais esse código e deixá-lo mais leve e rápido.
vlw.