Casa possui dois inteiros (sorteio, nível(que é definido));
Os números que devem entrar no array são a quantidade de jogadores, int quantJogador = tamanho/3;;
Cada número deve aparecer 3x no Array, nem mais nem menos.
Os números devem ser sorteados aleatóriamente.
Exemplo:
2 jogadores = 6 posições, o array deve conter 3 posições com 1 e 3 posições com 2, aleatóriamente, 1 - 2 - 1 - 1 - 2 - 2.
O que eu fiz, ele sorteia, só precisa “ver” se ja tem 3 números iguais, se tiver ele vai pular e vai apontar pra null e vai receber outro número, caso esse número ja tenha vai ficar sorteando até ter um número que possa…
for(int i = 0; i < nv1.length;i++){
do{
sorteio = 1 + (int)(Math.random() *quantJogador);
nv1[i] = new Casa(sorteio,1);
}while(nv1[i] == null);
}
Brincadeiras a parte, colega, qual a sua dúvida? O seu algoritmo está gerando exceção?
J
javaorg
nel:
Eu preciso tirar férias, e agora?
rs…
Brincadeiras a parte, colega, qual a sua dúvida? O seu algoritmo está gerando exceção?
Não é bem uma dúvida, é mais uma falta de conhecimento, preciso preencher o array com 3 números de cada e aleatóriamente, o que eu fiz foi preencher aleatóriamente, mais preciso que só entre 3x cada número, e o que eu fiz pode entrar 10x o mesmo…
J
javaorg
Não sei se existe alguma maneira de fazer um math.random que sorteia só 3x um mesmo número… ou sei la se tiver outra idéia…
J
javaorg
UP.
Preciso disso pra acabar um trabalho, por favor alguem ajuda.
asousaj
Cara,
Antes de adicionar ao ‘nv1’ verifica se o mesmo já não possui 3 posições com o valor q está a adicionar, se já tiver sorteia novamente.
Atenção só use o q eu escrevi se não achar outro metodo, pois nem pensei muito e de cara acho pouco eficiente(já que alguns sorteios serão descartados).
F
Fernando_Trindade
Amigo se compreendi bem sua logica… o que vc vai precisar fazer é dois random… no primeiro random vc sorteia o numero que precisa guarda no array, em seguida vc faz outro random(no caso do exemplo acima vc teria q fazer esse random 3 vezes) nesse caso para sortea as posiçoes do array, em que vai guarda o numero sorteado no primeiro random
Entao em alto nivel seria assim:
1° random numero q vai ser guardado x = 1 por exemplo;
2° random executado 3 vezes sairia por exemplo y = 0 , 2 , 5
seu array de tamanho 6 final ficaria assim {1,-,1,-,-,1,-} veja bem as poisçoes com “-” sao as ainda n preenchidas
espero ter ajudado abraço
J
javaorg
Fernando Trindade:
Amigo se compreendi bem sua logica… o que vc vai precisar fazer é dois random… no primeiro random vc sorteia o numero que precisa guarda no array, em seguida vc faz outro random(no caso do exemplo acima vc teria q fazer esse random 3 vezes) nesse caso para sortea as posiçoes do array, em que vai guarda o numero sorteado no primeiro random
Entao em alto nivel seria assim:
1° random numero q vai ser guardado x = 1 por exemplo;
2° random executado 3 vezes sairia por exemplo y = 0 , 2 , 5
seu array de tamanho 6 final ficaria assim {1,-,1,-,-,1,-} veja bem as poisçoes com “-” sao as ainda n preenchidas
espero ter ajudado abraço
Acho que não precisaria sortear as posições do array, só precisaria controlar que so fosse sorteado 3x um mesmo número.
Tipo:
posições do array:
0-1-2-3-4
1-2-1-1-"1"Não pode ja tem 3x o número 1, posição 4 recebe outro número != 1.
F
Fernando_Trindade
amigo se o valor sorteado deve se guardado no array em posiçoes aleatorias… creio q seria uma boa ideia vc fazer outro random pra sortea aleatoriamente onde sera guardado o numero sorteado
J
javaorg
Hmm pensei melhor acho que voce tem razão, assim eu poderia controlar, fazer um FOR pra percorrer de 1 até quantJogador, e guardar em 3 posições o mesmo número ! int sorteio = 0;
Isso faria com que sorteie a posição e coloque o i, porém como vou fazer pra saber se a posiçao “sorteio” já não está sendo usada ?
Digamos que o primeiro sorteio desse 0.
A posição 0 do array ia ter 1.
E se o segundo sorteio desse 0.
A posição 0 do array ia ter 1, e faltaria uma posição com o número 1…
Conseguiu entender ?
asousaj
Assim funciona, testei, não sei se é a melhor opção.