Table des matières
Générer des nombres aléatoires en JavaScript
Générer des entiers aléatoires dans une plage
Générer des nombres aléatoires cryptographiquement sécurisés
Générer des chaînes alphanumériques aléatoires en JavaScript
使用 toString() 生成随机字母数字字符串
最终想法
Maison interface Web js tutoriel Générer des nombres et des chaînes aléatoires en JavaScript

Générer des nombres et des chaînes aléatoires en JavaScript

Sep 02, 2023 am 08:57 AM
字符串 数字 随机

Générer des nombres et des chaînes aléatoires en JavaScript

La possibilité de générer des nombres aléatoires ou des chaînes alphanumériques s'avère utile dans de nombreuses situations. Vous pouvez l'utiliser pour faire apparaître des ennemis ou de la nourriture à différents endroits du jeu. Vous pouvez également l'utiliser pour suggérer des mots de passe aléatoires aux utilisateurs ou créer des noms de fichiers pour enregistrer des fichiers.

J'ai écrit un tutoriel sur la façon de générer des chaînes alphanumériques aléatoires en PHP. J'ai dit au début de cet article que peu d'événements sont véritablement aléatoires, et il en va de même pour la génération de nombres aléatoires ou de chaînes.

Dans ce tutoriel, je vais vous montrer comment générer une chaîne alphanumérique pseudo-aléatoire en JavaScript.

Générer des nombres aléatoires en JavaScript

Commençons par générer des nombres aléatoires. La première méthode qui me vient à l’esprit est Math.random(), qui renvoie un nombre pseudo-aléatoire à virgule flottante. Le nombre aléatoire sera toujours supérieur ou égal à 0 et inférieur à 1.

La distribution des nombres renvoyés dans cette plage est presque uniforme, cette méthode peut donc bien générer des nombres aléatoires sans écarts évidents dans l'utilisation quotidienne. Voici le résultat de dix appels à la méthode Math.random() :

for(let i = 0; i < 10; i++) {
  console.log(Math.random());
}

/* Outputs:
0.9981169188071801
0.7073616929117277
0.05826679080842556
0.30779242012809105
0.37282814053539926
0.8991639574910759
0.5851162879630685
0.40572834956467063
0.5286480734412005
0.07898699710613699
*/
Copier après la connexion

Générer des entiers aléatoires dans une plage

Comme vous l'avez vu dans la section précédente, Math.random() nous donnera un nombre aléatoire compris entre 0 (inclus) et 1 (exclusif). Supposons que nous voulions un entier aléatoire compris entre 0 (inclus) et 100 (exclusif). Tout ce que nous devons faire ici est de multiplier la plage d'origine par 100.

En prenant comme exemple la première valeur de sortie de l'extrait de code ci-dessus, 0,9981169188071801 deviendra 99,81169188071801 une fois multiplié par 100. Maintenant, nous pouvons utiliser la méthode Math.floor(), qui arrondira à l’inférieur et renverra le plus grand entier dont la valeur est inférieure ou égale à 99,81169188071801. En d’autres termes, cela nous donnera 99.

L'extrait de code suivant bouclera 10 fois pour afficher toutes ces étapes appliquées à différents nombres.

const max_limit = 100;

for(let i = 0; i < 10; i++) {
  let random_float = Math.random();
  let scaled_float = random_float * max_limit;
  let random_integer = Math.floor(scaled_float);
  
  let rf_str = random_float.toString().padEnd(20, ' ');
  let sf_str = scaled_float.toString().padEnd(20, ' ');
  let ri_str = random_integer.toString().padStart(2, ' ');
  
  console.log(`Random Float: ${rf_str} Scaled Float: ${sf_str} Random Integer: ${ri_str}`);
}

/* Outputs:
Random Float: 0.7976037763162469   Scaled Float: 79.76037763162469    Random Integer: 79
Random Float: 0.3794078358214559   Scaled Float: 37.94078358214558    Random Integer: 37
Random Float: 0.5749118617425708   Scaled Float: 57.49118617425708    Random Integer: 57
Random Float: 0.7110572178100005   Scaled Float: 71.10572178100006    Random Integer: 71
Random Float: 0.9157559644743132   Scaled Float: 91.57559644743132    Random Integer: 91
Random Float: 0.8773095295734263   Scaled Float: 87.73095295734264    Random Integer: 87
Random Float: 0.7714603913623834   Scaled Float: 77.14603913623834    Random Integer: 77
Random Float: 0.6431998616346499   Scaled Float: 64.31998616346499    Random Integer: 64
Random Float: 0.7909155691442253   Scaled Float: 79.09155691442254    Random Integer: 79
Random Float: 0.1219575935563590   Scaled Float: 12.19575935563590    Random Integer: 12
*/
Copier après la connexion

Maintenant que vous comprenez la logique derrière la multiplication et l'arrondi, nous pouvons écrire une fonction pour générer des entiers aléatoires dans la limite maximale.

function max_random_number(max) {
  return Math.floor(Math.random() * max);
}

for(let i = 0; i < 10; i++) {
  console.log(max_random_number(100));
}

/* Outputs:
35
23
92
94
42
9
12
56
40
21
*/
Copier après la connexion

Et si vous souhaitez générer des nombres aléatoires supérieurs à un minimum spécifié mais inférieurs à un maximum ?

Dans ce cas, vous pouvez ajouter la valeur minimale au début pour vous assurer que le nombre obtenu est au moins égal à la valeur minimale. Après cela, vous pouvez simplement générer un nombre aléatoire et appuyer sur max - min pour le mettre à l'échelle et l'ajouter à la plus petite valeur possible.

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

for(let i = 0; i < 10; i++) {
  console.log(min_max_random_number(50, 100));
}

/* Outputs:
96
81
95
56
73
72
71
90
51
53
*/
Copier après la connexion

Générer des nombres aléatoires cryptographiquement sécurisés

La méthode

Math.random() 方法不适合生成加密安全的随机数,但是 Crypto.getRandomValues() n'est pas adaptée pour générer des nombres aléatoires cryptographiquement sécurisés, mais la méthode Crypto.getRandomValues() peut nous aider ici. Cette méthode remplit le tableau transmis avec des nombres pseudo-aléatoires cryptographiquement sécurisés. Gardez à l’esprit que l’algorithme utilisé pour générer ces nombres aléatoires peut varier d’un agent utilisateur à l’autre.

Comme je l'ai mentionné précédemment, vous devez transmettre un nombre entier TypedArray à la méthode afin qu'elle la remplisse de valeurs aléatoires. Le contenu original du tableau sera remplacé. Le code suivant remplira notre tableau de dix éléments avec des entiers aléatoires.

let random_values = new Uint8Array(10);
console.log(random_values);
// Outputs: Uint8Array(10) [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]

crypto.getRandomValues(random_values);
console.log(random_values);
// Outputs: Uint8Array(10) [ 207, 209, 1, 145, 70, 111, 21, 141, 54, 200 ]
Copier après la connexion

Unit8Array() Le constructeur nous donne un tableau de 10 entiers non signés de 8 bits. Les valeurs du tableau sont toutes initialisées à zéro.

Une fois que nous transmettons ce tableau à getRandomValues() 方法,随机数的值将保持在 0 到 255 之间。您可以使用其他类型数组来生成不同范围的随机数。例如,使用 Int8Array() 构造函数将为我们提供一个整数值在 -128 到 127 之间的数组。同样,使用 Uint16Array(), cela nous donnera un tableau de valeurs entières jusqu'à 65 535.

let random_values = new Int8Array(10);
console.log(random_values);
// Outputs: Int8Array(10) [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]

crypto.getRandomValues(random_values);
console.log(random_values);
// Outputs: Int8Array(10) [ -82, -106, 87, 64, 42, -36, -53, 27, -38, 4 ]


let random_values = new Uint16Array(10);
console.log(random_values);
// Outputs: Uint16Array(10) [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]

crypto.getRandomValues(random_values);
console.log(random_values);
// Outputs: Uint16Array(10) [ 47615, 60195, 53177, 15169, 215, 4928, 12200, 6307, 30320, 20271 ]
Copier après la connexion

Générer des chaînes alphanumériques aléatoires en JavaScript

Nous allons maintenant utiliser les connaissances acquises dans la section précédente pour générer une chaîne alphanumérique aléatoire en JavaScript.

Le concept est très simple. Nous commencerons par une chaîne contenant tous les caractères requis. Dans cet exemple, la chaîne sera composée de lettres minuscules, de lettres majuscules et de chiffres de 0 à 9. Comme vous le savez peut-être déjà, nous pouvons accéder à un caractère à une position spécifique dans une chaîne en transmettant une valeur d'index à la chaîne.

Pour générer une chaîne alphanumérique aléatoire, tout ce que nous devons faire est de générer un nombre aléatoire, puis d'accéder au caractère à cet index aléatoire pour l'ajouter à notre chaîne aléatoire. L'extrait de code suivant résume le tout dans une petite fonction astucieuse :

const char_set = 'abcdefghijlkmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';

function max_random_number(max) {
  return Math.floor(Math.random() * max);
}

function get_random_string(length) {
  let random_string = '';

  for(let i = 0; i < length; i++) {
    random_string += char_set[max_random_number(char_set.length - 1)];
  }
  
  return random_string;
}

console.log(get_random_string(20));
// Outputs: lgtuRJZolu7AXj4HMoiM

console.log(get_random_string(40));
// outputs: scOoal3VXgeAjaHIieolhi2TyWFpAn5bBPPiX6UG
Copier après la connexion

使用 toString() 生成随机字母数字字符串

我们可以用来生成随机字母数字字符串的另一种方法是对随机生成的数字使用 toString() 方法。 toString() 方法返回一个表示我们指定数值的字符串。此方法接受可选的 radix 参数,该参数指定要表示数字的基数。值为 2 将返回二进制字符串,值为 16 将返回十六进制字符串。该参数默认值为10。最大值可以为36,因为它涵盖了全部26个字母和10个数字。

以下是针对不同 radix 值对此方法进行几次调用的输出:

let number = 3498650143868;

console.log(number.toString(2));
// Outputs: 110010111010010111110011001000110001111100

console.log(number.toString(10));
// Outputs: 3498650143868

console.log(number.toString(16));
// Outputs: 32e97cc8c7c

console.log(number.toString(36));
// Outputs: 18n99yoak
Copier après la connexion

您可能已经注意到,随着我们增加 radix,输出字符串的长度不断减少。在下面的代码片段中,我们将使用上一节中的 max_random_number() 函数来获取随机数。然后,我们将使用 toString() 方法将此随机数转换为字母数字字符串。

function max_random_number(max) {
  return Math.floor(Math.random() * max);
}

for(let i = 0; i < 10; i++) {
  console.log(max_random_number(Number.MAX_SAFE_INTEGER).toString(36));
}
/* Outputs:
1tr84s6c2sl
1yj4varyoj7
1zdg9nn0z6r
lubrjj1zih
13tt2n5vw9t
1mv6sctjgf
yx3fhnznhf
1wj4mdcrqb9
26sir75af2r
qdv9xv800t
*/
Copier après la connexion

如果您想要更大的字母数字字符串并希望它们具有固定长度(例如 40 个字符或 100 个字符)怎么办?在这种情况下,我们可以创建一个循环,不断附加生成的字符串,直到达到所需的长度。

function max_random_number(max) {
  return Math.floor(Math.random() * max);
}

function get_random_string(length) {
  let random_string = '';
  while(random_string.length < length) {
   random_string += max_random_number(Number.MAX_SAFE_INTEGER).toString(36);
  }
  return random_string.substring(0, length);
}

console.log(get_random_string(40));
// Outputs: bn0nfhcsjm18ylzqrm6bo1iktka2aq7qbbl5ybki

console.log(get_random_string(100));
// Outputs: rdosjhthsevmk91mj9zvqexz2z0v3pe2beasbzoworanzjg3bfpf975rzfy2fmo6pmj4p69u0x80ce92jh2vljx90g6r0lzd8vb0
Copier après la connexion

最终想法

在本教程中,我们学习了如何在 JavaScript 中生成随机数和字母数字字符串。借助 Math.random() 方法,在 JavaScript 中生成随机整数很容易。我们所要做的就是缩放输出,使其符合我们所需的范围。如果您希望随机数具有加密安全性,您还可以考虑使用 getRandomValues() 方法。

一旦我们知道如何生成随机数,创建随机字母数字字符串就很容易了。我们需要做的就是弄清楚如何将数字转换为字符。我们在这里使用了两种方法。第一个涉及访问预定义字符串中随机数字索引处的字符。如果您想具体了解随机字母数字字符串中应包含的字符,则此技术非常有用。另一种方法涉及使用 toString() 方法将十进制数转换为不同的基数。这减少了对 max_random_number() 函数的调用。

当然还有更多技术可用于生成随机字母数字字符串。这完全取决于您的需求以及您想要的方法的创意程度。

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Explication détaillée de la méthode de conversion du type int en chaîne en PHP Explication détaillée de la méthode de conversion du type int en chaîne en PHP Mar 26, 2024 am 11:45 AM

Explication détaillée de la méthode de conversion du type int en chaîne en PHP Dans le développement PHP, nous rencontrons souvent le besoin de convertir le type int en type chaîne. Cette conversion peut être réalisée de différentes manières. Cet article présentera en détail plusieurs méthodes courantes, avec des exemples de code spécifiques pour aider les lecteurs à mieux comprendre. 1. Utilisez la fonction intégrée strval() de PHP. PHP fournit une fonction intégrée strval() qui peut convertir des variables de différents types en types de chaîne. Lorsque nous devons convertir le type int en type chaîne,

Comment répéter une chaîne dans le didacticiel de chaîne répétitive python_python Comment répéter une chaîne dans le didacticiel de chaîne répétitive python_python Apr 02, 2024 pm 03:58 PM

1. Ouvrez d’abord pycharm et accédez à la page d’accueil de pycharm. 2. Créez ensuite un nouveau script python, cliquez avec le bouton droit sur nouveau - cliquez sur fichier python. 3. Entrez une chaîne, code : s="-". 4. Ensuite, vous devez répéter les symboles de la chaîne 20 fois, code : s1=s*20 5. Entrez le code de sortie d'impression, code : print(s1). 6. Enfin, exécutez le script et vous verrez notre valeur de retour en bas : - répété 20 fois.

Comment déterminer si une chaîne Golang se termine par un caractère spécifié Comment déterminer si une chaîne Golang se termine par un caractère spécifié Mar 12, 2024 pm 04:48 PM

Titre : Comment déterminer si une chaîne se termine par un caractère spécifique en Golang. Dans le langage Go, nous devons parfois déterminer si une chaîne se termine par un caractère spécifique. Ceci est très courant lors du traitement de chaînes. Cet article explique comment utiliser le langage Go pour implémenter cette fonction et fournit des exemples de code pour votre référence. Voyons d’abord comment déterminer si une chaîne se termine par un caractère spécifié dans Golang. Les caractères d'une chaîne dans Golang peuvent être obtenus par indexation, et la longueur de la chaîne peut être

Comment vérifier si une chaîne commence par un caractère spécifique en Golang ? Comment vérifier si une chaîne commence par un caractère spécifique en Golang ? Mar 12, 2024 pm 09:42 PM

Comment vérifier si une chaîne commence par un caractère spécifique en Golang ? Lors de la programmation en Golang, vous rencontrez souvent des situations où vous devez vérifier si une chaîne commence par un caractère spécifique. Pour répondre à cette exigence, nous pouvons utiliser les fonctions fournies par le package strings dans Golang pour y parvenir. Ensuite, nous présenterons en détail comment utiliser Golang pour vérifier si une chaîne commence par un caractère spécifique, avec des exemples de code spécifiques. En Golang, nous pouvons utiliser HasPrefix du package strings

Comment intercepter une chaîne en langage Go Comment intercepter une chaîne en langage Go Mar 13, 2024 am 08:33 AM

Le langage Go est un langage de programmation puissant et flexible qui fournit de riches fonctions de traitement de chaînes, notamment l'interception de chaînes. Dans le langage Go, nous pouvons utiliser des tranches pour intercepter des chaînes. Ensuite, nous présenterons en détail comment intercepter des chaînes en langage Go, avec des exemples de code spécifiques. 1. Utilisez le découpage pour intercepter une chaîne. Dans le langage Go, vous pouvez utiliser des expressions de découpage pour intercepter une partie d'une chaîne. La syntaxe de l'expression slice est la suivante : slice:=str[start:end]where, s

Manipulation de chaînes PHP : un moyen pratique de supprimer efficacement les espaces Manipulation de chaînes PHP : un moyen pratique de supprimer efficacement les espaces Mar 24, 2024 am 11:45 AM

Opération de chaîne PHP : une méthode pratique pour supprimer efficacement les espaces Dans le développement PHP, vous rencontrez souvent des situations dans lesquelles vous devez supprimer des espaces d'une chaîne. La suppression des espaces peut rendre la chaîne plus propre et faciliter le traitement et l'affichage ultérieurs des données. Cet article présentera plusieurs méthodes efficaces et pratiques pour supprimer des espaces et joindra des exemples de code spécifiques. Méthode 1 : utilisez la fonction intégrée PHP trim() La fonction intégrée PHP trim() peut supprimer les espaces aux deux extrémités de la chaîne (y compris les espaces, les tabulations, les nouvelles lignes, etc.), ce qui est très pratique et simple. utiliser.

Opération de chaîne PHP : supprimer les virgules supplémentaires et conserver uniquement les virgules. Conseils d'implémentation Opération de chaîne PHP : supprimer les virgules supplémentaires et conserver uniquement les virgules. Conseils d'implémentation Mar 28, 2024 pm 03:02 PM

Opération de chaîne PHP : supprimer les virgules supplémentaires et conserver uniquement les virgules. Conseils d'implémentation Dans le développement PHP, le traitement des chaînes est une exigence très courante. Parfois, nous devons traiter la chaîne pour supprimer les virgules supplémentaires et conserver les seules virgules. Dans cet article, je présenterai une technique d'implémentation et fournirai des exemples de code concrets. Tout d’abord, examinons une exigence courante : supposons que nous ayons une chaîne contenant plusieurs virgules et que nous devions supprimer les virgules supplémentaires et conserver uniquement la virgule unique. Par exemple, remplacez "apple,ba

Techniques PHP pour supprimer les deux derniers caractères d'une chaîne Techniques PHP pour supprimer les deux derniers caractères d'une chaîne Mar 23, 2024 pm 12:18 PM

En tant que langage de script largement utilisé pour développer des applications Web, PHP dispose de fonctions de traitement de chaînes très puissantes. Dans le développement quotidien, nous rencontrons souvent des opérations qui nécessitent la suppression d'une chaîne, notamment les deux derniers caractères de la chaîne. Cet article présentera deux techniques PHP pour supprimer les deux derniers caractères d'une chaîne et fournira des exemples de code spécifiques. Astuce 1 : Utilisez la fonction substr La fonction substr en PHP est utilisée pour renvoyer une partie d'une chaîne. Nous pouvons facilement supprimer des caractères en spécifiant la chaîne et la position de départ

See all articles