110 lines
4.2 KiB
Markdown
110 lines
4.2 KiB
Markdown
---
|
|
title: Random Method
|
|
localeTitle: Método aleatório
|
|
---
|
|
## Método aleatório
|
|
|
|
O método JavaScript `Math.random()` é um excelente método integrado para produzir números aleatórios. Quando `Math.random()` é executado, ele retorna um número aleatório que pode estar em qualquer lugar entre 0 e 1. O 0 é incluído e 1 é excluído.
|
|
|
|
### Gerando um número de ponto flutuante aleatório entre 0 e 1
|
|
|
|
O método `Math.random()` retornará um número de ponto flutuante (decimal) maior ou igual a 0 e menor que (mas nunca igual a) 1. Em outras palavras, `0 <= x < 1` . Por exemplo:
|
|
|
|
```JavaScript
|
|
console.log(Math.random());
|
|
// 0.7069207248635578
|
|
|
|
console.log(Math.random());
|
|
// 0.765046694794209
|
|
|
|
console.log(Math.random());
|
|
// 0.14069121642698246
|
|
```
|
|
|
|
(É claro que os números retornados serão diferentes a cada vez. Isso será assumido para todos os exemplos a seguir - resultados diferentes acontecerão em cada passagem.)
|
|
|
|
Para obter um número aleatório entre um intervalo maior, multiplique o resultado de `Math.random()` por um número.
|
|
|
|
### Gerando um número de ponto flutuante aleatório entre 0 e um máximo especificado
|
|
|
|
Normalmente você não precisa de números aleatórios entre 0 e 1 - você precisa de números maiores ou até inteiros.
|
|
|
|
Por exemplo, se você quiser um número de ponto flutuante aleatório entre 0 e 10, você pode usar:
|
|
|
|
```JavaScript
|
|
var x = Math.random()*10;
|
|
|
|
console.log(x);
|
|
// 4.133793901445541
|
|
```
|
|
|
|
### Gerando um número de ponto flutuante aleatório dentro de um intervalo
|
|
|
|
Se você precisa de um número de ponto flutuante aleatório que varia entre dois números específicos, você poderia fazer algo parecido com isto:
|
|
|
|
```JavaScript
|
|
var min = 83.1;
|
|
var max = 193.36;
|
|
|
|
var x = Math.random()*(max - min)+min;
|
|
|
|
console.log(x);
|
|
// 126.94014012699063
|
|
```
|
|
|
|
### Gerando um inteiro aleatório entre 0 e um máximo
|
|
|
|
Muitas vezes você precisa de números inteiros. Para fazer isso, você terá que usar alguns outros métodos do objeto `Math` , `Math.floor()` (arredondado para baixo até o inteiro mais próximo) e `Math.ceil()` (arredonda para o inteiro mais próximo).
|
|
|
|
Por exemplo, se você precisar selecionar aleatoriamente de uma matriz de 10 elementos, precisará de um número aleatório entre 0 e 9 inclusive (lembre-se de que as matrizes são indexadas como zero).
|
|
|
|
```JavaScript
|
|
var x = Math.floor(Math.random()*10);
|
|
|
|
console.log(x);
|
|
// 7
|
|
```
|
|
|
|
(Lembre-se que `Math.random()` nunca retornará exatamente 1, então `Math.random()*10` nunca retornará exatamente 10. Isso significa que após o arredondamento, o resultado será sempre 9 ou menos.)
|
|
|
|
### Gerando um inteiro aleatório entre 1 e um máximo
|
|
|
|
Se você precisar de um número aleatório com o número mínimo de 1 (por exemplo, escolhendo um dia aleatório em janeiro), você pode usar o método `Math.ceil()` .
|
|
|
|
```JavaScript
|
|
var x = Math.ceil(Math.random()*31);
|
|
|
|
console.log(x);
|
|
// 23
|
|
```
|
|
|
|
Outra maneira seria usar a função anterior (usando `Math.floor()` ) e adicionar 1 a ela:
|
|
|
|
```JavaScript
|
|
var x = Math.floor(Math.random()*31)+1;
|
|
|
|
console.log(x);
|
|
// 17
|
|
```
|
|
|
|
### Gerando um inteiro aleatório dentro de um intervalo
|
|
|
|
Por fim, ocasionalmente, você precisa de um inteiro aleatório entre dois inteiros específicos. Por exemplo, se você estiver tentando comprar bilhetes de rifa e souber os números do menor e do maior número:
|
|
|
|
```JavaScript
|
|
var min = 1718;
|
|
var max = 3429;
|
|
|
|
var x = Math.floor(Math.random()*(max-min+1)+min);
|
|
|
|
console.log(x);
|
|
//2509
|
|
```
|
|
|
|
### Quão aleatório é Math.random ()?
|
|
|
|
Pode-se notar que o número retornado por `Math.random()` é um número pseudo-aleatório, pois nenhum computador pode gerar um número verdadeiramente aleatório, que exiba aleatoriedade em todas as escalas e em todos os tamanhos de conjuntos de dados. No entanto, o número pseudo-aleatório gerado por `Math.random()` é geralmente suficiente para as necessidades de praticamente qualquer programa que você possa escrever. A não-verdadeiramente-aleatoriedade só se torna aparente em conjuntos de números astronomicamente grandes ou quando decimais incomumente precisos são necessários.
|
|
|
|
### Mais Informações:
|
|
|
|
* Documentação: [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random) |