Personalizar

por kirupa com o código de Scott Ruttencutter | arquivado em JavaScript 101

Saiba como gerar uma série de números aleatórios, que caem, não só dentro de um limite superior e inferior do intervalo que você especificar, mas a freqüência com que cada número aparece é justo e equilibrado! ⚖️

Para muitas situações que vão desde lance de moeda operações processual, animações, você vai querer trabalhar com números cujos valores são um bitunpredictable., Você vai querer trabalhar com números que são aleatórios. Gerar um número aleatório é fácil. É embutido para JavaScript e exposto através da Matemática infame.função random (). Agora, se esta função já existe, o que é que ainda estamos aqui a fazer? Bem, usar a função é apenas parte de ser capaz de gerar um número aleatório. Para a maioria das situações da vida real, não queremos um número qualquer. Queremos um tipo específico de número aleatório-um que cai dentro de um intervalo que definimos. Há alguns gotchas subtis com isso, e isso é o que o resto destas seções irão explorar. a partir!,

basta mostrar – me o código

Antes de mergulhar nos detalhes, se tudo o que você quer é o código para gerar um número inteiro aleatório dentro de um intervalo definido, use Matemática.random() with the following formula:

Math.floor(Math.random() * (1 + High - Low)) + Low

The value for High is the largest random number you would like to generate. O valor para baixo é o menor número aleatório que você gostaria de gerar em vez disso. Quando você executar este código, o que você vai obter é um número que cai aleatoriamente em algum lugar entre os limites especificados por alto e baixo.,

Aqui estão alguns exemplos:

Para fazer coisas simples, aqui está uma função que você pode usar em vez disso:

function getRandomNumber(low, high) { let r = Math.floor(Math.random() * (high - low + 1)) + low; return r;}

Basta ligar getRandomNumber e passar o limite inferior e superior como argumentos:

isso é tudo o que há para gerar um número aleatório que cai dentro de um intervalo que você especificar.

a adição de 1 explicado

em JavaScript, Matemática.,random() retorna um número maior-que ou igual a 0, mas menor do que 1:

Outra forma de statingthat é (0 <= n < 1), onde n é o número de arelooking para. Esta incapacidade de matemática.random to get really close to 1 but never quite get there is largely why getting a random number between a range of numbers is so…inelegante:

Math.floor(Math.random() * (1 + High - Low)) + Low

olhando para a nossa abordagem um pouco mais adiante, vamos começar com a maior estranheza, a adição do 1. É por isso que a incluímos., Já afirmámos muitas vezes que a matemática.a função random () nunca irá reverter um 1 como seu valor. Vai devolver algo parecido.9999999, mas nunca será um 1. Também queremos um número redondo que não inclua casas decimais. Existem várias abordagens para arredondar um número, mas estamos arredondando o rendimento por Matemática.andar onde vamos até ao nearestinteger. Este arredondamento é o problema.

Se não adicionarmos o 1, por causa de como Matemática.se o chão funcionar, nunca obterá o máximo de resposta possível quando multiplicarmos o resultado de Alta-Baixa por Matemática.aleatorio()., Isso provavelmente não faz muito sentido, então vamos olhar para um exemplo onde tentar obter um número aleatório sem adicionar o 1.

O que queremos fazer é gerar um número aleatório entre 10 e 50. Ignorando o 1, Esta é a expressão que se parecerá:

Math.floor(Math.random() * 40) + 10

a matemática.random() * 40 nunca irá retornar um 40 porque isso exigiria Matemática.random() to return a 1…vamos ser optimistas e dizer que Matemática.o random () devolve A.9999, e multiplicamos esse valor por 40. O valor que será devolvido será 39.996. Adivinha que Matemática.piso 39.,O 996 vai ser? Vai ser 39! Quando este 39 for adicionado a 10, você terá avalue de 49. Não tem uma forma concebível de obter uma resposta de 50, que é o número elevado da sua gama de valores. A única solução é adicionar um 1 à operação:

Math.floor(Math.random() * 41) + 10

Uma vez que você faça isso, você será capaz de gerar todos os números dentro do intervalo de seus números altos e baixos, 10 e 50, respectivamente, com igual frequência.

conclusão

gerar números aleatórios corretamente é um problema desafiador., Parece realmente simples, mas conseguir a gama de números não só corretos, mas também ocorrendo com igual frequência é onde os desafios acontecem. Desde que você esteja ciente das limitações dos vários métodos de arredondamento, você pode substituir a matemática.andar com Matemática.cell ou, se és mesmo ousado, Math.rodada.tem alguma pergunta ou só quer conversar? Comentar abaixo ou deixar por nossos fóruns (eles são realmente a mesma coisa!) onde um grupo das pessoas mais amistosas que você vai encontrar será feliz em ajudá-lo!,

Quando Kirupa não está ocupado escrevendo sobre si mesmo na 3ª pessoa, ele está praticando o distanciamento social…mesmo no seu Twitter, Facebook, e LinkedIn perfis.

Hit Subscribe para obter dicas legais, truques, selfies, e mais pessoalmente entregue à sua caixa de entrada.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *