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

Número aleatório

Olá, gostaria de saber como que eu faria para que no numero aleatório não fosse escolhido o mesmo número consecutivamente.

2 respostas
solução!

Olá Lucas, tudo bem com você?

Bem, podemos ter esse comportamento apenas implementando uma verificação, vou te dar um exemplo de como poderíamos fazer:

Irei pegar o nosso gerador de número aleatório e transformar em uma função:

function gerarNumeroAleatorio(valor) {
    return Math.floor(Math.random() * valor)
}

Em nossa função trocaFraseAleatoria teremos algo parecido com isso


function trocaFraseAleatoria(data) {
    var frase = $(".frase");
    var numeroAleatorio = gerarNumeroAleatorio(data.length); 

    frase.text(data[numeroAleatorio].texto);
    atualizaTamanhoFrase();
    atualizaTempoInicial(data[numeroAleatorio].tempo);
}

Agora como queremos que não seja a mesma frase eu vou apenas colocar um while para gerar um valor novo, caso seja repetido:

    while(frase.text() == data[numeroAleatorio].texto){
        numeroAleatorio = gerarNumeroAleatorio(data.length)
    }

Então veja que eu estou pegando o conteúdo da frase atual e comparando com a frase sorteada, enquanto elas forem iguais irei chamar a função para gerar um novo número, e só então, atualizarei com a nova :)

Ficando algo assim:

function trocaFraseAleatoria(data) {
    var frase = $(".frase");
    var numeroAleatorio = gerarNumeroAleatorio(data.length); 

    while(frase.text() == data[numeroAleatorio].texto){
        console.log("Repetiu no " + numeroAleatorio)
        numeroAleatorio = gerarNumeroAleatorio(data.length)
    }

    frase.text(data[numeroAleatorio].texto);
    atualizaTamanhoFrase();
    atualizaTempoInicial(data[numeroAleatorio].tempo);
}

Compreendeu? Abraços e Bons Estudos!

Compreendi sim, muito obrigado!!