Jogo da Adivinhação, números aleatórios, sem o zero e sem números repetidos.
function sorteiaNumeros(qtd){ //Criamos a função sorteiaNumeros.
var secret = [];                                     //Com suas variáveis.
var num = 1;
while(num <= qtd){                          //while, para gerarmos os elementos da lista secret.
    var numAleatorio = sorteia ();       //Variável numAleatório chamando a função sorteia.
    if(numAleatorio !== 0){                   //Condição para números diferentes de zero.
    var achou = false;
    for(var posicao = 0; posicao < secret.length; posicao++) {     //for para criarmos nºs diferentes.
        if (secret[posicao] == numAleatorio) {
        achou = true;
        break;
    }
}
if(achou == false) {
    secret.push(numAleatorio);             //empurra numAleatorio para a lista secret.
    num++;                                                         // incrementa num até o valor de qtd.
}
}} return secret; //retorna valores que serão atribuídos aos segredos.
No comando for, para criarmos números diferentes, var posicao é declarado e inicializado com valor nulo, em seguida, temos a condição posicao < secret.length para execução do if que vem abaixo: if(secret[posicao]==numAleatorio). E, por fim, o incremento com posicao++. Certo? Quando var numAleatorio gerar o primeiro número (sendo diferente de zero), este ocupará a posição secret[0], então, como o if que vem abaixo será false? numAleatorio e secret[0] não serão os mesmos? Aliás, como posicao < secret.length, já que secret só terá um "tamanho", depois que valores lhe forem inseridos?
 
            