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

[Dúvida] Math.random() ??

Quais são as limitações do Math.random() para aplicações mais complexas, como jogos ou criptografia?

É possível controlar a “aleatoriedade” de Math.random()?

2 respostas
solução!

Olá Anderson! Como vai?

O Math.random() é uma ferramenta bastante útil para gerar números pseudoaleatórios, mas ele tem algumas limitações, especialmente quando se trata de aplicações mais complexas como jogos ou criptografia.

  1. Pseudoaleatoriedade: O Math.random() não gera números verdadeiramente aleatórios, mas sim pseudoaleatórios. Isso significa que, embora os números pareçam aleatórios, eles são gerados por um algoritmo determinístico. Para a maioria das aplicações, isso é suficiente, mas em criptografia, onde a imprevisibilidade é crucial, isso pode ser uma limitação.

  2. Intervalo de valores: O Math.random() gera um número entre 0 (inclusive) e 1 (exclusivo). Para usar em jogos, você frequentemente precisa converter esse número para um intervalo diferente, como entre 1 e 100. Isso pode ser feito multiplicando o resultado por um valor e, em seguida, ajustando o intervalo conforme necessário, como mostrado no exemplo abaixo:

    // Gera um número entre 1 e 10
    let randomNumber = Math.floor(Math.random() * 10) + 1;
    
  3. Controle da aleatoriedade: Em algumas situações, você pode querer controlar a aleatoriedade para fins de teste ou para garantir que todos os jogadores tenham a mesma experiência. Isso pode ser feito usando um gerador de números pseudoaleatórios com uma semente (seed). O Math.random() não permite definir uma semente diretamente, mas existem bibliotecas em JavaScript que oferecem essa funcionalidade, como seedrandom.

Para aplicações que exigem um nível mais alto de aleatoriedade ou segurança, como criptografia, é recomendado usar bibliotecas ou APIs específicas que fornecem números verdadeiramente aleatórios ou geradores de números pseudoaleatórios mais robustos.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Sim, vou implementar e testar essas bibliotecas pra variar a questão da pseudoaleatoriedade nos códigos. Valeu