Tentei esta função para encontrar um número int aleatório entre duas ligações, conheço o método de Math.floor () and Math.random()
como funciona, mas não consegui entender a lógica com esta função (max-min + 1)
e a adição de min
. por que precisamos usar (max-min+1)
a adição de min
?
function random(min, max) {
const num = Math.floor(Math.random() * (max - min + 1)) + min;
return num;
}
console.log(random(5, 10));
O objetivo de
(max - min + 1)
é determinar o número total de valores possíveis dentro do intervalo especificado e garante que, ao multiplicá-lo porMath.random()
, você considere todos os números inteiros dentro desse intervalo. Adicionar 1 é crucial para incluir o limite superior do intervalo.Por exemplo, se você deseja gerar números aleatórios entre 3 e 6 (inclusive). O intervalo é 3, 4, 5, 6 . Se você calcular apenas
(max - min)
, seria(6 - 3)
, que é igual a 3 . Sem adicionar 1, você teria um intervalo de 3 valores diferentes (3, 4, 5) e o limite superior (6) seria excluído.Ao adicionar 1 ao cálculo
(max - min)
, você obtém (6 - 3 + 1) , que é igual a 4. Agora, você tem um intervalo de 4 valores diferentes (3, 4, 5, 6) , incluindo o limite superior.Bem, isso é algo que você geralmente não entende no início, então vamos detalhar:
Agora vamos analisar seu código: O limite superior é 10 O limite inferior é 5 Math.random gera um pseudo-float, por exemplo, 0,5
Espero que isso dê uma melhor compreensão do problema.