nombre - random javascript between two numbers




Générer un nombre aléatoire entre deux nombres en JavaScript (12)

Existe-t-il un moyen de générer un nombre aléatoire dans une plage spécifiée (par exemple de 1 à 6: 1, 2, 3, 4, 5 ou 6) dans JavaScript?


La fonction Math.random () renvoie un nombre pseudo-aléatoire à virgule flottante dans la plage [0, 1); c'est-à-dire de 0 (inclusivement) jusqu'à 1 (excluant)

Ajoutons le min randomly de 0 à max-min

Cas 0

min + 0 * ( max - min ) = min

Cas 1

min + 1 * ( max - min ) = max

Cas aléatoire en utilisant Math.random 0 <= r <1

min + r * ( max - min ) = X , où X a une plage de min <= X < max

Le résultat ci-dessus X est un nombre aléatoire. Cependant, en raison de Math.random (), notre limite gauche est inclusive et la limite droite est exclusive. Pour inclure notre limite droite, nous augmentons la limite droite de 1 et le résultat du plancher.

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

Pour obtenir le nombre aléatoire

generateRandomInteger(-20, 20) ;


Math.random()

Dans la documentation de Math.random() Developer Network:

// Returns a random integer between min (included) and max (included)

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

Exemples utiles

// 0 -> 10
Math.floor(Math.random() * 11);

// 1 -> 10
Math.floor(Math.random() * 10) + 1;

// 5 -> 20
Math.floor(Math.random() * 16) + 5;

// -10 -> (-2)
Math.floor(Math.random() * 9) - 10;

D'autres solutions

  • (Math.random() * 6 | 0) + 1
  • ~~(Math.random() * 6) + 1

Exemple

Renvoie un nombre aléatoire entre 1 et 10:

Math.floor((Math.random() * 10) + 1);

Le résultat pourrait être: 3

Essayez-vous: here

-

ou en utilisant lodash / undescore:

_.random(min, max)

Docs: - lodash.com/docs#random - Underscore


J'ai trouvé que la solution de Francisc ci-dessus n'incluait pas le nombre min ou max dans les résultats, donc je l'ai modifié comme ceci:

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

Je cherchais un générateur de nombres aléatoires écrit en TypeScript et je l'ai écrit après avoir lu toutes les réponses, j'espère que cela fonctionnerait pour les codeurs TypeScript.

    Rand(min: number, max: number): number {
        return (Math.random() * (max - min + 1) | 0) + min;
    }   

Malgré de nombreuses réponses et presque le même résultat. Je voudrais ajouter ma réponse et expliquer son fonctionnement. Parce qu'il est important de comprendre son fonctionnement plutôt que de copier un code de ligne. Générer des nombres aléatoires n'est rien d'autre que de simples calculs.

CODE:

function getR(lower, upper) {

  var percent = (Math.random() * 100);
  // this will return number between 0-99 because Math.random returns decimal number from 0-0.9929292 something like that
  //now you have a percentage, use it find out the number between your INTERVAL :upper-lower 
  var num = ((percent * (upper - lower) / 100));
  //num will now have a number that falls in your INTERVAL simple maths
  num += lower;
  //add lower to make it fall in your INTERVAL
  //but num is still in decimal
  //use Math.floor>downward to its nearest integer you won't get upper value ever
  //use Math.ceil>upward to its nearest integer upper value is possible
  //Math.round>to its nearest integer 2.4>2 2.5>3   both lower and upper value possible
  console.log(Math.floor(num), Math.ceil(num), Math.round(num));
}


Si vous voulez obtenir entre 1 et 6, vous devez calculer:

Math.floor(Math.random() * 6) + 1  

Où:

  • 1 est le numéro de départ
  • 6 est le nombre de résultats possibles (1 + début (6) - fin (1) )

jsfiddle: https://jsfiddle.net/cyGwf/477/

Entier aléatoire : pour obtenir un entier aléatoire entre min et max , utilisez le code suivant

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

Random Floating Point Number : pour obtenir un nombre à virgule flottante aléatoire entre min et max , utilisez le code suivant

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

Référence: Math.random()


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

Ce qu'il fait "extra" est qu'il permet des intervalles aléatoires qui ne commencent pas par 1. Ainsi, vous pouvez obtenir un nombre aléatoire de 10 à 15 par exemple. La flexibilité.


var x = 6; // can be any number
var rand = Math.floor(Math.random()*x) + 1;




random