Les chaînes aléatoires sont des caractéristiques utiles dans divers cas tels que le chiffrement, les graines de données, et plus. Bien qu'il soit impossible de créer une valeur véritablement arbitraire à l'aide de machines déterministes, nous pouvons obtenir un ensemble de valeurs de pseudorandom qui semblent générées au hasard.
Ce guide vous montrera comment générer une chaîne aléatoire en utilisant Ruby. Puisqu'une chaîne est un tableau de caractères alphanumériques, nous commencerons par les bases et générerons des nombres et des caractères aléatoires.
Générer un nombre aléatoire
Avant de nous concentrer sur la génération de chaînes aléatoires dans Ruby, apprenons à générer un nombre aléatoire dans Ruby.
Nous utilisons la méthode Rand pour générer des nombres aléatoires. Si vous appelez la méthode Rand sans arguments, il génère un numéro flottant dans la plage de 0.0 et 1.0
rand()La fonction Rand vous permet également de passer un entier comme argument. Si la méthode a une valeur entière fournie, elle générera une valeur entière aléatoire dans la plage de 0 à la valeur spécifiée.
Rand (10)Dans l'exemple ci-dessus, chaque fois que vous exécutez la méthode ci-dessus, vous obtiendrez une valeur entre 0 et 10, exclusive.
Supposons que vous souhaitiez générer un nombre aléatoire dans une plage spécifique. Dans un tel scénario, vous pouvez spécifier la plage comme:
commencer arrêterPar exemple, pour générer une valeur aléatoire entre 30 et 60:
Rand (30… 60)L'exemple ci-dessus est exclusif de la valeur finale. Cela signifie que 60 ne seront pas inclus comme une valeur aléatoire.
Si vous souhaitez inclure une valeur finale, utilisez la notation à double prise comme:
Rand (30… 60)Générer une chaîne aléatoire
Bien qu'il existe différentes façons de générer une chaîne aléatoire dans Ruby, nous resterons avec une simple qui utilise des méthodes et des fonctionnalités de rubis intégrés.
Étape 1 - Générer un tableau de caractères
La première méthode consiste à générer un tableau de caractères. Pour ce faire, nous utiliserons la méthode de la plage dans Ruby.
Par exemple, le code suivant génère un tableau de caractères inférieurs.
('a'… 'z')Ensuite, nous devons convertir la sortie du code ci-dessus en un tableau. Nous pouvons utiliser la méthode TO_A comme:
('a'… 'z').to_aLa méthode ci-dessus nous donnera un tableau de caractères.
Vous ne pouvez utiliser que des caractères minuscules uniquement. Vous pouvez générer des caractères majuscules en tant que:
('A'… 'z').to_aÉtape 2 - Mélanger les caractères générés
Dans l'exemple précédent, nous générons un tableau de caractères dans l'ordre séquentiel. Par conséquent, les valeurs ne sont pas dans un ordre aléatoire.
Pour introduire le caractère aléatoire pour chaque fois que le bloc est appelé, nous pouvons utiliser la méthode Shuffle.
La méthode Shuffle renverra un nouveau tableau avec les éléments dans le tableau précédent mélangé.
Prenez le premier exemple du tableau et mélangez-le.
('a'… 'z').to_a.mélangerDans cet exemple, les caractères sont mélangés dans un ordre aléatoire à chaque fois que nous exécutons le code.
Étape 3 - Convertir en chaîne
Jusqu'à présent, nous n'avons créé qu'un tableau de personnages. L'étape suivante consiste à convertir les caractères dans le tableau en une seule chaîne, que nous pouvons réaliser en utilisant la méthode de jointure.
Par exemple:
to_a.mélanger.rejoindreL'exécution du code ci-dessus renverra une chaîne aléatoire de caractères minuscules.
Étape 4 - Plus de hasard
Nous pouvons introduire plus de hasard à notre chaîne générée en introduisant des caractères majuscules et des valeurs numériques.
Nous pouvons le faire par:
[* 'a'… 'z', * 0… 9, * 'a'… 'z']L'exemple ci-dessus générera un tableau de valeurs minuscules, majuscules et numériques.
Pour les randomiser, utilisez la méthode Shuffle et rejoignez pour créer une chaîne. Vous trouverez ci-dessous un exemple de sortie:
[* 'a'… 'z', * 0… 9, * 'a'… 'z'].mélanger.rejoindreSupposons que nous voulons obtenir une chaîne d'une longueur spécifique. Par exemple, pour générer une chaîne de longueur 10. Nous pouvons transmettre la plage à la méthode Shuffle comme:
[* 'a'… 'z', * 0… 9, * 'a'… 'z'].remanier [0… 10].rejoindreMéthode 2 - Module de vente et de
Ruby fournit également le package SecureRandom pour générer des chaînes aléatoires. Il prend en charge Hex, Base64 et octets.
Pour l'utiliser, importez-le comme:
exiger un `` cuivre etGénérer une valeur de base64 aléatoire comme:
Securrentandom.base64Pour Hex, entrez:
Securrentandom.hexagonalEnfin, en utilisant des octets:
Securrentandom.random_bytesFermeture
Ce guide couvre comment générer des valeurs aléatoires dans Ruby à l'aide de méthodes et de modules prédéfinis.