Boa Tarde Anna Paula, tudo bom?
Testei seu código aqui e a unica coisa que ele continua repetindo é o numero 0. E para que isso não aconteça , basta você acrescentar um if informando que só pode continuar caso sortear um numero diferente de 0 .
while (numero<=quantidade){
var numeroAleatorio = sorteia();
var achou = false;
!= Representa o sinal de diferença
//Abaixo condição
if (numeroAleatorio != 0){
for(var posicao = 0; posicao< segreds.length; posicao++){
if(segreds[posicao] == numeroAleatorio){
achou = true;
break;
}
}
if(achou == false){
segreds.push(numeroAleatorio);
numero++;
}
}
Abaixo o codigo completo para você comparar
<meta charset="UTF-8">
<input/>
<button>Compare com o meu segredo</button>
<script>
function sorteia(){
return Math.round(Math.random() * 10);
}
function sorteiaNumeros(quantidade){
var segreds = [];
var numero = 1;
while(numero<=quantidade){
var numeroAleatorio = sorteia();
var achou = false;
if(numeroAleatorio != 0){
for(var posicao = 0; posicao< segreds.length; posicao++){
if(segreds[posicao] == numeroAleatorio){
achou = true;
break;
}
}
if(achou == false){
segreds.push(numeroAleatorio);
numero++;
}
}
}
return segreds;
}
var segreds = sorteiaNumeros(7);
console.log(segreds);
var input = document.querySelector ('input');
input.focus();
function verifica (){
var achou = false;
for(var posicao = 0;posicao < segreds.length;posicao++){
if(input.value == segreds[posicao]){
alert("Acertou!")
achou = true;
break;
}
}
if(achou == false){
alert("Errou!")
}
input.value = "";
}
var button = document.querySelector ('button');
button.onclick = verifica;
</script>