J'ai des problèmes dans cette ligne de mon code:

var randomNumber = function(40, 60) {
  var value = Math.floor(Math.random() * (21)) + 40;

  return value;
};

La valeur min 40 et la valeur max 60 dans la fonction. comment je peux réparer ça?

-3
Nicolas Esquivel 4 juin 2020 à 05:25

3 réponses

Meilleure réponse

Cela fonctionnera:

function randomInteger(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

randomNumber(40, 60);

Vous devez appeler la fonction avec les paramètres 40 et 60.

1
Udbhav 4 juin 2020 à 02:32

Vous pouvez utiliser une fonction qui prend les paramètres min et max et les exploiter de cette façon:

function randomIntegerNumber(min, max) {
  return Math.ceil(min + Math.random() * (max - min));
}

Ensuite, vous pouvez l'appeler avec:

randomIntegerNumber(40,60)

Si vous voulez toujours renvoyer un nombre entre 40 et 60 utilisez:

function randomIntegerNumber() {
  const min = 40;
  const max = 60;
  return Math.ceil(min + Math.random() * (max - min));
}

Math.random () renvoie une valeur entre [0, 1), une n'est pas incluse, c'est la raison pour laquelle vous utilisez Math.ceil (), il va approximer un nombre flottant à son entier suivant.

Limits:
If Math.random() = 0,
then 40 + 0 * (20) = 40,
Math.ceil(40) = 40

If Math.random() = 0.9999 (aprox 1)
then 40 + 0.9999 * (20) = 59.998000000000005,
Math.ceil(59.998000000000005) = 60

Math.ceil () transforme tout nombre flottant en son nombre entier suivant (59,99 -> 60)

1
Andres Foronda 4 juin 2020 à 02:53

Faites ceci: après quelques recherches, j'ai trouvé que pour les nombres aléatoires entre deux valeurs int, vous devez faire comme ça:

function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}

J'espère que cela résoudra votre problème.

3
VINICIUS LOPES ALVES 4 juin 2020 à 02:33