Você precisa anotar que números já saíram, para que você tente novamente pegar um novo número. É igual a jogar dados; volta e meia sai um número que já saiu. Então você precisa jogar o dado de novo, até que apareça um número que não apareceu antes.
WendersonLP
Exemplo prático:
publicstaticvoidmain(String[]args){Randomrand=newRandom();ArrayList<Integer>list=newArrayList<Integer>();intquantidadeDeNumeros=10;for(intcount=0;i<quantidadeDeNumeros;i++){intnumeroAuxiliar=rand.nextInt(10);// ou rand.nextInt();// enquanto o número contiver na lista// é lido outro númerowhile(list.contains(numeroAuxiliar)){numeroAuxiliar=rand.nextInt();// ou rand.nextInt();}list.add(numeroAuxiliar);}System.out.println(list);}
Rooney
mas é porq tenho q entregar isso daki a pouco como posso fazer não se repetir no meu código?
sergiotaborda
Vamos lá a ver se aprendem a usar OO para este problema.
Não use Random.
Não repetir = usar Set
Escolher números aletatoriamente num intervalo discreto ( de numeros inteiros) é a mesma coisa que sortear esses mesmos numeros de um conjunto.
Sortear numero de um conjunto faz -se assim:
public<T>Collection<T>sortear(Set<T>conjuntoDeTodosOsElementosPossiveis,intquantosSeraoSorteados){
//seoconjuntonãotemelementossuficientesdáerroif(conjuntoDeTodosOsElementosPossiveis.size()<quantosSeraoSorteados){
thrownewIllegalArgumentException("Não ha "+quantosSeraoSorteados+" elementos no conjunto");}
//ométodosufflealteraapenaslistasemodificaoobjetopassado.PorissocopiamostudoparaumalistaprimeiroList<T>conjunto=newArrayList<T>(conjuntoDeTodosOsElementosPossiveis); // isto faz a copia//sorteiaCollections.shuffle(conjunto); // shuffle significa "embaralhar'Collection<T>resultado=newArrayList<T>(quantosSeraoSorteados);for(inti=0; i < quantosSeraoSorteados; i++){resultado.add(conjunto.get(0)); // sempre pega o primeiro. à medida que são removidos ha mesmos elementos}
returnresultado;
}
Sortear de 4 numeros de 1 a 20
//cria o conjunto de numerosSet<Integer>numeros=newHashset<Integer>();for(inti=1;i<=20;i++){numeros.add(i);}// usa o método Collection<Integer>sorteados=sortear(numeros,4);
E
entanglement
Pois é, comidinha na boca todo mundo quer. Já lhe deram a comidinha na boca, que tal parar de reclamar, hein?
[quote=Matrix]
There is no spoon
[quote]
renamed
Resumindo um pouco o que o sergiotaborda disse, se vc quer sortear 4 números aleatorios de 1 a 20, pode criar uma lista, inserir os elementos 1, 2, 3, ... , 19, 20 nessa lista e depois embaralhá-la.
publicstaticvoidmain(String[]args){List<Integer>lstNumeros=newArrayList<Integer>();for(inti=0;i<20;i++){lstNumeros.add(newInteger(i+1));}Collections.shuffle(lstNumeros);// Embaralha os númerosSystem.out.println("Numeros escolhidos:");for(inti=0;i<4;i++){System.out.print(lstNumeros.get(i)+" ");}}
ok?
Rooney
ok mano vou dar uma olhada como q eu termino esse meu programa, mesmo assim obrigado.