O que esse codigo faz?

olá,

estava precisando de um codigo q embaralhasse cartas e encontrei esse:

        rnd = 0; 
        aux = ""; 
        for ( i = 0; i < tabuleiro.length; i++ ) {  // Loop encarregado    de  embaralhar os elementos. 
           rnd = Math.random() * 11; 
           rnd = Math.round( rnd );      
           aux = tabuleiro[ i ]; 
           tabuleiro[ i ] = tabuleiro[ rnd ]; 	
           tabuleiro[ rnd ] = aux; 
        }

mas na realidade, nem entendi muito o q ele esta fazendo. O que akele math.round faz ?
Quem garante q aos numeros naum sairao repetidos?

alguem pode me explicar o que esta acontecendo a partit da linha do math.round ???

thanks

Alias encontrei esse codigo tbm :

for (int i=0; i<cards.length; i++) {
int randomPosition = rgen.nextInt(cards.length);
int temp = cards[i];
cards[i] = cards[randomPosition];
cards[randomPosition] = temp;
}

parece quase igual, mas na segunda linha nao sei o que ta fazendo.

Qual a diferença entre esse e o de cima???

e o que ta acontecendo na segunda linha do codigo ???

Math.round arrendonda o número para o long mais próximo

Veja por si só:
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Math.html

sky,

Segue breve explicação:

rnd = 0;
aux = "";
for ( i = 0; i < tabuleiro.length; i++ ) { // 1
rnd = Math.random() * 11;// 2
rnd = Math.round( rnd ); // 2
aux = tabuleiro[ i ]; // 3
tabuleiro[ i ] = tabuleiro[ rnd ]; //3
tabuleiro[ rnd ] = aux; //3

1.Cria um loop para varrer todas as posições; num baralho, 52
2.Gera um numero inteiro randomicamente entre 0 e 11
3.Troca de posição os elementos (cartas) de indices i e rnd, que proporciona o embaralhamento.

[b][color=violet]mas tipo, não tem como esse numero gerado sair repetido naum ?

como faço para naum repetir os numeros gerados ?[/color][/b]

[quote=sky][b][color=violet]mas tipo, não tem como esse numero gerado sair repetido naum ?

como faço para naum repetir os numeros gerados ?[/color][/b][/quote]

Então…acho legal você usar a classe random…do java.util

[quote=sky][b][color=violet]mas tipo, não tem como esse numero gerado sair repetido naum ?

como faço para naum repetir os numeros gerados ?[/color][/b][/quote]

ae parceiro tem a classe Random, que ele pega o horario do pc que vai alterando a cada segundo e gera o numeros aleatorios!! depender do valor que vc deseja tem uma probabilidade de repetir sim!!

[quote=camilolopes][quote=sky][b][color=violet]mas tipo, não tem como esse numero gerado sair repetido naum ?

como faço para naum repetir os numeros gerados ?[/color][/b][/quote]

ae parceiro tem a classe Random, que ele pega o horario do pc que vai alterando a cada segundo e gera o numeros aleatorios!! depender do valor que vc deseja tem uma probabilidade de repetir sim!![/quote]
Sim camilo…tem uma probalidade de repetir como você falou…mas como a seed é pega pelo horário…as chances são pequenas e se repetir é uma questão de probabilidade mesmo…e de quantos numeros irá pegar…:smiley:
Inclusive a classe random, você pode dar a seed para o construto na hora de criar a instancia…ai no caso os numeros aleatorios gerados seram sempre os mesmos, sempre que você rodar a aplicação…
:slight_smile: