O que esse codigo faz?

8 respostas
S

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

8 Respostas

S

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 ???

Roger75

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

renandemelo

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

N

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.

S

[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]

akumaldo

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]

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

LPJava

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]

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!!

akumaldo

camilolopes:
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]

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!!


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:

Criado 10 de julho de 2006
Ultima resposta 11 de jul. de 2006
Respostas 8
Participantes 6