Olá boa tarde.
Na parte do programa abaixo você chama diretamente a função sorteia()
diferentemente do exemplo que chama a variável numeroAleatorio
e isso está dando os resultados de 0s e repetições de números.
if(achou == false){
segredos.push(sorteia());
numero++;
}
deve acontecer isso pq no caso do seu código ele não irá passar pelo if
que verifica se o numeroAleatorio é diferente de 0
, pois ele está indo diretamente para a função sorteia()
gerando os números aleatórios pelo retorno do Math.round
.
if(numeroAleatorio !== 0){
for(var posicao = 0; posicao < segredos.length; posicao++){
Não sei se ficou clara a explicação, esse exercício ficou complexo pra mim por ter muitos passos de verificação, mas acredito que seja esse o ponto.