Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Estou com dúvida no curso de Lógica de Programação, no exercício 1 do capítulo Desafio final.

O desafio final que eu estou tentando fazer tem umas diferenças que estou tentando resolver: 1 - No caso de gerar um número com random, é necessário colocar random()*60+1 para que o número aleatório quando arredondado não seja zero. 2 - Esse é o meu problema: o random pode gerar um array com números repetidos. Nesse caso, estou tentado ver de uma forma mais simples sem tantos if's como varrer um array de 6 valores e procurar por números repetidos. No código abaixo está como eu gerei o array com 6 números.

2 respostas

Usa um for ao invés de if. Com o for tu percorre o teu array. Se achar um valor igual, sai fora e calcula um novo valor.

solução!

Olá José! Com relação às suas dúvidas:

1 - Para gerar números de 1 até 60 fiz assim:

numeroSorteado = Math.round( (Math.random()*59) +1 );

Assim, podemos garantir que quando o random retornar 0, o valor de "numeroSorteado" será 1. Da mesma forma, quando o random retornar 1 o valor gerado será 60 (59+1).

2 - Usei a seguinte função para sortear 6 números não repetidos:

var iniciarSorteio = function() {
        var contW = 0;    
        var numeroSorteado;
        var sorteioValido = true;
        while (contW<6){
            numeroSorteado = Math.round( (Math.random()*59) +1 );
            for (var i=0;i<sorteados.length;i++){
                 if (sorteados[i]==numeroSorteado) {
                    sorteioValido=false;
                    break;
                 }
            }
            if (sorteioValido==true){
                sorteados.push(numeroSorteado);
                contW++;
            }
            else {
                sorteioValido=true;
            }
        }
    }