Dê uma atenção a function sorteianumeros, o primeiro ponto é que voce declara a variavel numero dentro do while:
function sorteianumeros(quantidade) {
var segredos = [];
while(numero <= quantidade) {
var numero = 1
Essa variavel tem a função de informar para o while quantas vezes ele vai se repetir, se voce declarar ela dentro do laço todas as vezes que o loop do while terminar a numero será incrementada mas ao iniciar de novo, ela vai receber novamente o valor de 1, daí voce tem um ciclo infinito.
Outra coisa que recomendo você observar é o fechamento dos seus IF, While e For, a maioria deles dentro dessa função não está fechando no lugar correto, vou deixar meu código como exemplo, a unica diferença para o seu é que eu usei um for no lugar do While, mas ambos devem funcionar:
function sorteiaNum(quantidade) {
var segredos = [];
for(i = 0; i < quantidade; i++) {
achou = false;
numAleatorio = sorteio(10);
for(i2 = 0; i2 < segredos.length; i2++) {
if(i2 == numAleatorio) {
achou = true;
break;
}
}
if(achou == false){
segredos.push(numAleatorio);
}
}
return segredos;
}