--- title: Math.random() slug: Web/JavaScript/Reference/Global_Objects/Math/random tags: - JavaScript - Math - Method - Reference translation_of: Web/JavaScript/Reference/Global_Objects/Math/random ---
A função Math.random()
retorna um número pseudo-aleatório no intervalo [0, 1[
, ou seja, de 0 (inclusivo) até, mas não incluindo, 1 (exclusivo), que depois você pode dimensionar para um intervalo desejado. A implementação seleciona uma semente para o algoritmo de geração de números aleatórios; esta semente não pode ser escolhida ou reatribuída.
Math.random()
não gera números criptograficamente seguros. Não a use para nada relacionado a segurança. Use a API Web Crypto, mais precisamente o método {{domxref("RandomSource.getRandomValues()", "window.crypto.getRandomValues()")}}.
Math.random()
Um número pseudo-aleatório entre 0 (inclusivo) e 1 (exclusivo).
Note que os números em JavaScript são pontos flutuantes que seguem o padrão IEEE 754 com comportamento arredondar-para-o-par-mais-próximo, os intervalos que serão citados nos exemplos a seguir (exceto o exemplo do Math.random()
), não são exatas. Se limites extremamente grandes forem escolhidos (253 ou maior), em raros casos é possível que o limite superior (que seria exclusivo) seja retornado.
function getRandom() { return Math.random(); }
Este exemplo retorna um número entre dois valores definidos. O valor retornado será maior ou igual a min,
e menor que max
.
function getRandomArbitrary(min, max) { return Math.random() * (max - min) + min; }
Este exemplo retorna um número inteiro entre dois valores definidos. O valor não poderá ser menor que min
(ou do próximo inteiro maior que min,
caso min
não seja inteiro), e será menor (mas não igual) a max
.
function getRandomInt(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min)) + min; }
Pode ser tentandor usar Math.round()
para arredondar min
e max,
mas dessa maneira a aleatoriedade dos números seguiria uma distribuição não-uniforme, que talvez não seja o que você precisa.
A função getRandomInt()
acima tem intervalo com o valor mínimo incluído e o máximo excluído. Mas se você precisar que a função inclua, tanto o mínimo quanto o máximo, em seus resultados? A função getRandomIntInclusive()
abaixo faz isso.
function getRandomIntInclusive(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
Especificação | Status | Comentário |
---|---|---|
{{SpecName('ES1')}} | {{Spec2('ES1')}} | Definição inicial. JavaScript 1.0 (UNIX Only) / JavaScript 1.1 (Todas plataformas). |
{{SpecName('ES5.1', '#sec-15.8.2.14', 'Math.random')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES6', '#sec-math.random', 'Math.random')}} | {{Spec2('ES6')}} |
{{Compat("javascript.builtins.Math.random")}}