Como gerar números aleatórios sem repetições em Java?

2 respostas
loopjava
D

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;
    	}

2 Respostas

J

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)
S

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.

Criado 13 de junho de 2020
Ultima resposta 13 de jun. de 2020
Respostas 2
Participantes 3