Les nombres aléatoires sont utilisés dans de nombreux scénarios de programmation, du développement de jeux et des simulations à la génération d'UUID. Pour cela, JavaScript fournit des méthodes intégrées pour travailler avec des nombres aléatoires. Dans cet article, nous explorerons différentes manières de générer des nombres aléatoires en JavaScript, des plus simples aux plus avancées. Alors commençons !
En JavaScript, la principale méthode pour générer des nombres aléatoires est Math.random(). Cette méthode renvoie un nombre aléatoire à virgule flottante compris entre 0 (inclus) et 1 (exclusif). Cela signifie qu'il renverra une valeur comprise dans la plage [0, 1), comme 0,2345 ou 0,6789. C'est aussi simple que ça ! Vérifions un exemple de code pour cela :
let randomNum = Math.random(); console.log(randomNum); // Outputs a random number between 0 and 1
Cela donnerait un résultat comme celui-ci, si nous exécutions le programme sur nos systèmes :
Bien que ce soit un excellent point de départ, mais si nous avons besoin d'un entier aléatoire ou d'un nombre dans une plage spécifique, Math.random() seul ne suffira pas à faire le travail.
Pour générer un nombre aléatoire dans une plage spécifique, par exemple entre une valeur minimale particulière et une autre valeur maximale particulière, vous devrez faire un peu de calcul. Voici une formule qui vous aidera :
function getRandomInRange(min, max) { return Math.random() * (max - min) + min; } console.log(getRandomInRange(10, 20)); // Outputs a number between 10 and 20
Cela donnerait un résultat comme :
Le Math.random() génère un nombre compris entre 0 et 1. Et, en le multipliant par (max - min) puis en ajoutant min, vous vous assurez que le nombre se situe dans la plage [min, max).
Parfois, vous aurez peut-être besoin d'un nombre entier au lieu d'une valeur à virgule flottante. Pour générer des entiers aléatoires dans une plage spécifique, vous pouvez utiliser Math.floor() ou Math.ceil(). Voyons comment :
function getRandomIntInRange(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } console.log(getRandomIntInRange(1, 100)); // Outputs a random integer between 1 and 100
Lorsque nous exécutons ce code, nous obtiendrons un résultat similaire comme celui-ci :
Ici, Math.floor() arrondit à l'entier le plus proche, garantissant que le résultat est un entier compris dans la plage [min, max].
Vous pouvez également générer des valeurs booléennes aléatoires (vrai ou faux) en JavaScript, ce qui peut être utile dans les jeux ou dans tout scénario de prise de décision :
function getRandomBoolean() { return Math.random() >= 0.5; } console.log(getRandomBoolean()); // Outputs true or false randomly
Nous obtiendrons un résultat similaire comme celui-ci lorsque nous exécuterons le code :
Maintenant, si nous voulons sélectionner un élément aléatoire dans un tableau, nous pouvons facilement utiliser Math.floor() avec Math.random(). Voyons comment nous pouvons procéder :
let randomNum = Math.random(); console.log(randomNum); // Outputs a random number between 0 and 1
Maintenant, cela nous donnera n'importe quel élément aléatoire du tableau comme celui-ci, lorsque nous exécuterons le programme :
Pour mélanger un tableau, c'est-à-dire réorganiser aléatoirement ses éléments, vous pouvez utiliser l'algorithme de lecture aléatoire de Fisher-Yates. Voici comment cela peut être implémenté à l’aide de Math.random() :
function getRandomInRange(min, max) { return Math.random() * (max - min) + min; } console.log(getRandomInRange(10, 20)); // Outputs a number between 10 and 20
Maintenant, lorsque nous exécuterons le programme, il nous donnera un tableau mélangé comme celui-ci :
Dans de nombreux scénarios de développement, vous devrez peut-être utiliser des identifiants uniques et vous pourriez envisager d'utiliser un UUID (Universally Unique Identifier) aléatoire. Voici un exemple simple de générateur d'UUID utilisant notre méthode aléatoire :
function getRandomIntInRange(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } console.log(getRandomIntInRange(1, 100)); // Outputs a random integer between 1 and 100
Ainsi, lorsque nous exécuterons ce programme, il générera un UUID aléatoire comme celui-ci :
Comme vous pouvez le constater, JavaScript offre une grande flexibilité pour générer des nombres aléatoires. Et avec Math.random() comme base, nous pouvons créer des nombres aléatoires, des entiers, des booléens et même randomiser des tableaux. En comprenant ces techniques de base, nous espérons que vous disposerez d'une base solide pour implémenter le caractère aléatoire dans vos projets JavaScript. Que vous créiez un jeu, un simulateur de loterie ou toute autre fonctionnalité nécessitant de l'imprévisibilité, ces méthodes répondront à vos besoins !
Et enfin, merci d'avoir lu le blog ! J'espère que vous l'avez trouvé instructif et précieux. Pour plus d'informations, suivez-moi sur Twitter (swapnoneel123) où je partage davantage de contenus de ce type à travers mes tweets et mes fils de discussion. Et pensez à le partager avec d'autres sur Twitter et identifiez-moi dans votre message pour que je puisse le voir aussi. Vous pouvez également consulter mon GitHub (Swpn0neel) pour voir mes projets. Je vous souhaite une bonne journée à venir et d'ici là, continuez à apprendre et à explorer !!
Non, Math.random() n'est pas vraiment aléatoire. Il s'agit d'un générateur de nombres pseudo-aléatoires (PRNG), ce qui signifie qu'il utilise un algorithme déterministe pour générer des nombres. Bien que ces chiffres puissent sembler aléatoires, ils sont générés par un processus prévisible.
Math.random() de JavaScript ne vous permet pas de définir une graine de manière native. Certains autres langages de programmation autorisent les générateurs de nombres aléatoires prédéfinis pour des raisons de reproductibilité, mais en JavaScript, vous aurez besoin d'une bibliothèque tierce (telle que seedrandom) si vous souhaitez cette fonctionnalité.
Le choix de conception derrière Math.random() renvoyant un nombre à virgule flottante entre 0 et 1 est d'offrir de la flexibilité. En renvoyant une valeur normalisée, les développeurs peuvent facilement l'adapter à n'importe quelle plage ou format, comme des entiers ou des nombres compris entre un minimum et un maximum spécifiques.
Dans la plupart des cas, Math.random() est suffisamment efficace et rapide pour une utilisation régulière, comme dans les jeux, les animations ou d'autres applications quotidiennes. Cependant, si vous devez générer des millions de nombres aléatoires en temps réel (par exemple, dans des simulations hautes performances), vous pouvez envisager des solutions optimisées telles que des générateurs aléatoires basés sur WebAssembly ou des algorithmes personnalisés.
Non, Math.random() n'est pas suffisamment sécurisé à des fins cryptographiques. Il est prévisible et ne doit pas être utilisé dans des situations nécessitant des nombres aléatoires sécurisés, comme la génération de mots de passe ou de clés cryptographiques. Pour ces scénarios, vous devez utiliser la méthode crypto.getRandomValues() fournie par l'API Web Cryptography, qui offre un caractère aléatoire plus sécurisé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!