[quote=Mark_Ameba][quote=Lavieri]
Se tiver que fazer de modo manual, meu conselho é… adcionar os caracters a um List, e usar o comando remove com um número random… algo assim
int tamanho = listaNormal.size();
List listaEmberalhada = new ArrayList(tamanho);
for (int i = 0; i < tamanho; i++)
listaEmbaralhada.add(listaNormal.remove(rnd.nextInt(listaNormal.size()));
ele vai fazer um loop com a quantidade exata, e vai fazer o embaralhamento
[/quote]
Isso ainda não garante não repetir o numero… por que da primeira vez voce pode ter 10 elementos na segunda 9, terceira 8,… mas todos os numeros inferiores ainda podem ser sorteados.
E a solução do HashMap eu passei por que não existe um gerador de numeros randomicos que não se repitam(Até onde sei).[/quote]
obvio que garante… vou te dar um exemplo…
digamos que eu tenha uma lista…
List cores
onde contenha os elementos nessa sequencia {vermelho, laranja, azul, marrom, verde}
quando vc faz um outra lista Lost coresEmbaralhadas
int randomico = rdn.nextInt(cores.size());
ele fara um sorteio de 0 ate 4 suponha que foir sorteado o numero 2… no momento que vc faz
coresEmbaralhadas.add(cores.remove(randomico));
vc vai retirar a cor azul da lista cores, e vai adciona-la a lista coresEmbaralhadas…
agora a lista cores = {vermelho, laranja, marrom, verde}
e a lista coresEmbaralhadas = {azul}
quando vc rodar a sequencia denovo… não tem como ele escolher a cor azul, pois ela não existe + na 1° lista, e ja esta na segunda
… seguindo o mesmo reciocinio, supondo que depois o número sorteado foram 3,1,0,0 teriamos o seguinte
cores = {}
coresEmbaralhadas = {azul,verde,laranja,vermelho,marrom}
como vc vê, mesmo saindo número repetido, saiu o zero 2 vezes, as cores não se repetem
…
apenas detalhando…
quando o sorteio for o 3 ficariamos com
agora a lista cores = {vermelho, laranja, marrom}
e a lista coresEmbaralhadas = {azul, verde}
quando o sorteio for o 1 ficariamos com
agora a lista cores = {vermelho, marrom}
e a lista coresEmbaralhadas = {azul, verde,laranja}
quando o sorteio for o 0 ficariamos com
agora a lista cores = {marrom}
e a lista coresEmbaralhadas = {azul, verde,laranja,vermelho}
quando o sorteio for o 0 ficariamos com
agora a lista cores = {}
e a lista coresEmbaralhadas = {azul, verde,laranja,vermelho,marrom}