Estou com um pequeno problema estou gerando números randômicos e não quero que eles se repitam, existe algum metodo dentro da classe Random que faz essa parte ou é preciso colocar um pouco de lógica pra isso.
[code]import java.util.Random;
public class ExerArray {
public static void main (String[] args){
Random gera = new Random ();
int[][] numAle = new int [4][4];
int maiorNum = 0;
int linha = 0;
int coluna = 0;
for (int i = 0 ; i < numAle.length ; i++){
for (int j = 0 ; j<numAle[i].length ; j++){
numAle[i][j] = gera.nextInt(41)+10;
System.out.print (numAle[i][j] + " “);
if (numAle[i][j] > maiorNum){
maiorNum = numAle[i][j];
linha = i;
coluna = j;
}
}
System.out.println (”");
}
linha++;
coluna++;
System.out.println ("");
System.out.println ("O maior numero é : " + maiorNum + " na linha " + linha + " e na coluna " + coluna);
}
}[/code]
Por definição uma sequencia aleatória de numeros pode ter repetições.
Se a sequencia não tem repetições ela não é aleatória.
Vc pode usar Random para criar uma sequencia aleatória e incluir uma logica para não ter repetições.
Isso é simples de fazer. Crie uma classe e use um Set
Se você precisa embaralhar números (cartas do baralho), ou sortear apenas uns poucos números (números da Sena), então você pode usar Collections.shuffle. Um exemplo bobo:
public void imprimirBaralho () {
List<Integer> cartas = new ArrayList<Integer>();
for (int i = 1; i <= 52; ++i) {
cartas.add (i);
}
Collections.shuffle (cartas);
// Imprimindo as primeiras 4 cartas que foram embaralhadas...
for (int i = 0; i < 4; ++i) {
System.out.println (cartas.get (i));
}
}
[quote=thingol]Se você precisa embaralhar números (cartas do baralho), ou sortear apenas uns poucos números (números da Sena), então você pode usar Collections.shuffle. Um exemplo bobo:
…
[/quote]
thingol,
sua dica me ajudou. Precisei embaralhar um lista do tipo “java.util.LinkedList” e com Collections.shuffle foi muito fácil.
int valor=0;
HashSet<Integer> has_lista = new HashSet<Integer>();
for (int i = 1; i < 1000; ++i) {
valor=(int)(Math.random()*1000);
has_lista.add (valor);
}