Alguém saberia como posso gerar números aleatório, usando o random abaixo, sem que ocorram repetições?
public void sorteiaCartelaB() {
for (int i=0; i < b.length; i++) {
b[i] = (int)(Math.random() * 60 + 1);
for (int j=0; j<b.length; j++)
if (b[i] == b[j] && i != j)
b[i] = (int)(Math.random() * 60 + 1);
else
continue;
}
return b;
}
Usa o Set a velocidade de adição dele é O(1) e ele não adiciona elementos repetidos. Depois vc pode converter ele para um array e tals.
Eí cara e essa linha retorna um valor randomico muito mais eficiente do que Math.random(), isso pq ele não é Thread safe, o ganho de desempenho é visto quando vc tá usando várias Threads:
ThreadLocalRandom.current().nextInt(x, y)
Da mesma forma que é feito no mundo real, você tem uma caixinha cheia de números não repetidos e vai pegando eles aleatoriamente.
Dá uma olhada na classe GloboDaSorte
que tem neste post.
1 curtida