Repetir em seguida? Como assim…? Não entendi bem o problema, já que números pseudoaleatórios não se repetem em seguida (e essa é a ideia). Mesmo porque a semente (seed) é baseada no relógio da máquina. Poderia explicar melhor o que pretende?
É q às vezes o aleatório escolhe o mesmo número 2 ou 3 vezes consecutivas… queria q isso n ocorresse, q sempre fosse um outro número, mesmo q, eventualmente, se repitam em outro momento.
Ah sim, agora entendi. Nesse caso você pode armazená-los em um array e sempre testar. Se gerar igual a que esteja no array, mande gerar novamente até que o número seja diferente. Uma alternativa também é usar uma versão empacotada do int (Integer) como aqui: Usando o Contains.
Cada vez que vc gera um número, vc o salva, quando um novo número for gerado, vc o compara com aquele que vc salvou, se for igual, vc gera outro, se for diferente, vc guarda o novo número e segue a execução.
Aqui está um exemplo:
public class Main {
public static void main(String[] args) {
int savedNumber = Integer.MAX_VALUE;
for (int i = 0; i < 20; i++) {
int valor;
do valor = (int) (1 + Math.random() * (11 - 1));
while (valor == savedNumber);
savedNumber = valor;
System.out.println(valor);
}
}
}
Este código guarda apenas o último número gerado. Abaixo está uma solução mais robusta onde vc pode escolher a quantidade de números guardados:
import java.util.ArrayDeque;
import java.util.Collections;
import java.util.Queue;
public class Main {
public static void main(String[] args) {
final int MAX_SAVED_NUMBERS = 3;
Queue<Integer> savedNumbers = new ArrayDeque<>(Collections.nCopies(MAX_SAVED_NUMBERS, Integer.MAX_VALUE));
for (int i = 0; i < 20; i++) {
int valor;
do valor = (int) (1 + Math.random() * (11 - 1));
while (savedNumbers.contains(valor));
if (savedNumbers.size() == MAX_SAVED_NUMBERS) savedNumbers.remove();
savedNumbers.add(valor);
System.out.println(valor);
}
}
}