---
title: "Como usar JavaScript Math.random () como gerador de números aleatórios - Cibersistemas.pt"
description: "Como usar JavaScript Math.random () como gerador de números aleatórios. Saiba mais!"
url: "https://cibersistemas.pt/tecnologia/como-usar-javascript-math-random-como-gerador-de-numeros-aleatorios/"
language: "pt-BR"
published: "2020-08-24T20:46:35+00:00"
image: "https://cibersistemas.pt/wp-content/uploads/2024/04/Imagem-post.jpg"
content_signal: "search=yes, ai-input=yes, ai-train=yes"
---

# Como usar JavaScript Math.random () como gerador de números aleatórios - Cibersistemas.pt

```
const randomValue = Math.random();
```

Mas o `Math.random()` método não retorna um número inteiro. Em vez disso, ele retorna um valor de ponto flutuante entre 0 (inclusivo) e 1 (exclusivo). Ademais, observe que o valor retornado de `Math.random()` é de natureza pseudo-aleatória.

Números aleatórios gerados por `Math.random()` pode parecer aleatório, mas esses números irão se repetir e, eventualmente, exibir um padrão não aleatório ao longo de um período de tempo.

Isso ocorre porque a geração de números aleatórios algorítmicos nunca pode ser verdadeiramente aleatória por natureza. É por isso que os chamamos de geradores de números pseudo-aleatórios (PRNGs).

Para saber mais sobre o `Math.random()` método que você pode verificar [isto](https://www.freecodecamp.org/news/javascript-math-random-method-explained/) guia.

## Função Geradora de Número Aleatório

Agora vamos usar o `Math.random()` método para criar uma função que retornará um número inteiro aleatório entre dois valores (inclusive).

```
const getRandomNumber = (min, max) => {
  return Math.floor(Math.random() * (max - min + 1)) + min;
};
```

Vamos quebrar a lógica aqui.

o `Math.random()` método retornará um número de ponto flutuante entre 0 e 1 (exclusivo).

Portanto, os intervalos seriam os seguintes:

```
[0 .................................... 1)

[min .................................... max)
```

Para fatorar o segundo intervalo, subtraia min de ambas as extremidades. Isso daria a você um intervalo entre 0 e `max-min`.

```
[0 .................................... 1)

[0 .................................... max - min)
```

Portanto, agora, para obter um valor aleatório, você faria o seguinte:

```
const x = Math.random() * (max - min)
```

Aqui `x` é o valor aleatório.

Atualmente, `max` é excluído do intervalo. Para torná-lo inclusivo, adicione 1. Ademais, você precisa adicionar o `min` de volta que foi subtraído antes para obter um valor entre `[min, max)`.

```
const x = Math.random() * (max - min + 1) + min
```

Tudo bem, então agora a última etapa restante é garantir que `x` é sempre um número inteiro.

```
const x = Math.floor(Math.random() * (max - min + 1)) + min
```

Você poderia usar o `Math.round()` método em vez de `floor()`, mas isso lhe daria uma distribuição não uniforme. Isso significa que ambos `max` e `min` terá meia chance de sair como um resultado. Usando `Math.floor()` lhe dará uma distribuição perfeitamente uniforme.

Portanto, agora que você tem um bom entendimento de como funciona uma geração aleatória, vamos usar esta função para simular o lançamento de dados.

## The Rolling Dice Game

Nesta seção, criaremos um mini-jogo de dados realmente simples. Dois jogadores inserem seus nomes e lançam os dados. O jogador cujo dado tiver um número maior vencerá a rodada.

Primeiro, crie uma função `rollDice` que simula a ação de rolar os dados.

Dentro do corpo da função, chame o `getRandomNumber()` funcionar com `1` e `6` como os argumentos. Isso lhe dará qualquer número aleatório entre 1 e 6 (ambos inclusivos), exatamente como os dados reais funcionariam.

```
const rollDice = () => getRandomNumber(1, 6);
```

Em seguida, crie dois campos de entrada e um botão conforme mostrado abaixo:

```
<div id="app">
      <div>
        <input id="player1" placeholder="Enter Player 1 Name" />
      </div>
      <div>
        <input id="player2" placeholder="Enter Player 2 Name" />
      </div>
      <button id="roll">Roll Dice</button>
      <div id="results"></div>
    </div>
```

Quando o botão ‘Roll Dice’ é clicado, pegue os nomes dos jogadores nos campos de entrada e chame o `rollDice()` função para cada jogador.

```
const getRandomNumber = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;

const rollDice = () => getRandomNumber(1, 6);

document.getElementById("roll").addEventListener("click", function () {
  // fetch player names from the input fields
  const player1 = document.getElementById("player1").value;
  const player2 = document.getElementById("player2").value;

  // roll dice for both players
  const player1Score = rollDice();
  const player2Score = rollDice();

  // initialize empty string to store result
  let result = "";

  // determine the result
  if (player1Score > player2Score) {
    result = `${player1} won the round`;
  } else if (player2Score > player1Score) {
    result = `${player2} won the round`;
  } else {
    result = "This round is tied";
  }

  // display the result on the page
  document.getElementById("results").innerHTML = `
  <p>${player1} => ${player1Score}</p>
  <p>${player2} => ${player2Score}</p>
  <p>${result}</p>
  `;
});
```

Você pode validar os campos de nome dos jogadores e embelezar a marcação com algum CSS. Para fins de concisão, estou simplificando para este guia.

É isso. Você pode conferir a demonstração [aqui](https://5zmdd.csb.app/).

## Conclusão

Portanto, gerar números aleatórios em JavaScript não é tão aleatório, afinal. Tudo o que estamos fazendo é pegar alguns números de entrada, usar matemática e cuspir um número pseudo-aleatório.

Para a maioria dos aplicativos e jogos baseados em navegador, tanta aleatoriedade é suficiente e atende ao seu propósito.

É isso neste guia. Fique seguro e continue codificando como uma fera.

```json
{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cibersistemas.pt\/tecnologia\/como-usar-javascript-math-random-como-gerador-de-numeros-aleatorios\/#article","isPartOf":{"@id":"https:\/\/cibersistemas.pt\/tecnologia\/como-usar-javascript-math-random-como-gerador-de-numeros-aleatorios\/"},"author":{"name":"António César de Andrade","@id":"https:\/\/cibersistemas.pt\/#\/schema\/person\/16d8bada39e076166999196c439d0cf6"},"headline":"Como usar JavaScript Math.random () como gerador de números aleatórios","datePublished":"2020-08-24T20:46:35+00:00","mainEntityOfPage":{"@id":"https:\/\/cibersistemas.pt\/tecnologia\/como-usar-javascript-math-random-como-gerador-de-numeros-aleatorios\/"},"wordCount":557,"commentCount":0,"publisher":{"@id":"https:\/\/cibersistemas.pt\/#organization"},"articleSection":["Tecnologia"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/cibersistemas.pt\/tecnologia\/como-usar-javascript-math-random-como-gerador-de-numeros-aleatorios\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/cibersistemas.pt\/tecnologia\/como-usar-javascript-math-random-como-gerador-de-numeros-aleatorios\/","url":"https:\/\/cibersistemas.pt\/tecnologia\/como-usar-javascript-math-random-como-gerador-de-numeros-aleatorios\/","name":"Como usar JavaScript Math.random () como gerador de números aleatórios - Cibersistemas.pt","isPartOf":{"@id":"https:\/\/cibersistemas.pt\/#website"},"datePublished":"2020-08-24T20:46:35+00:00","description":"Como usar JavaScript Math.random () como gerador de números aleatórios . Saiba mais agora!","breadcrumb":{"@id":"https:\/\/cibersistemas.pt\/tecnologia\/como-usar-javascript-math-random-como-gerador-de-numeros-aleatorios\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cibersistemas.pt\/tecnologia\/como-usar-javascript-math-random-como-gerador-de-numeros-aleatorios\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/cibersistemas.pt\/tecnologia\/como-usar-javascript-math-random-como-gerador-de-numeros-aleatorios\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cibersistemas.pt\/"},{"@type":"ListItem","position":2,"name":"Como usar JavaScript Math.random () como gerador de números aleatórios"}]},{"@type":"WebSite","@id":"https:\/\/cibersistemas.pt\/#website","url":"https:\/\/cibersistemas.pt\/","name":"Cibersistemas.pt","description":"Cibersistemas.pt é um portal de notícias sobre games e tecnologia. Todos os dias dezenas de conteúdos de qualidade sobre o gênero, em língua portuguesa.","publisher":{"@id":"https:\/\/cibersistemas.pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cibersistemas.pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/cibersistemas.pt\/#organization","name":"Cibersistemas.pt","url":"https:\/\/cibersistemas.pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/cibersistemas.pt\/#\/schema\/logo\/image\/","url":"https:\/\/cibersistemas.pt\/wp-content\/uploads\/2026\/07\/Logo-Cibersistemas.jpg","contentUrl":"https:\/\/cibersistemas.pt\/wp-content\/uploads\/2026\/07\/Logo-Cibersistemas.jpg","width":400,"height":400,"caption":"Cibersistemas.pt"},"image":{"@id":"https:\/\/cibersistemas.pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/cibersistemas.pt","https:\/\/www.youtube.com\/channel\/UCcWHF3Q9kv7IXgdFuy1LB9A","https:\/\/pt.pinterest.com\/cibersistemas\/","https:\/\/www.instagram.com\/cibersistemas\/"]},{"@type":"Person","@id":"https:\/\/cibersistemas.pt\/#\/schema\/person\/16d8bada39e076166999196c439d0cf6","name":"António César de Andrade","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/5beb60e3ad49176318e3b1841b1410d50cb3f637bcb34baa8a2e43f3ab050fbd?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5beb60e3ad49176318e3b1841b1410d50cb3f637bcb34baa8a2e43f3ab050fbd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5beb60e3ad49176318e3b1841b1410d50cb3f637bcb34baa8a2e43f3ab050fbd?s=96&d=mm&r=g","caption":"António César de Andrade"},"description":"Apaixonado por tecnologia e inovação, traz notícias do seguimento que atua com paixão há mais de 15 anos.","sameAs":["https:\/\/cibersistemas.pt\/","https:\/\/www.facebook.com\/cibersistemas.pt"],"url":"https:\/\/cibersistemas.pt\/author\/antonio\/"}]}
```
