Ruby Générer une chaîne aléatoire

Ruby Générer une chaîne aléatoire

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()
=> 0.041586206067679155

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)
=> 5

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êter

Par exemple, pour générer une valeur aléatoire entre 30 et 60:

Rand (30… 60)
=> 42

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)
=> 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_a

La 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élanger

Dans 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.rejoindre
=> "mixwnezhjckusqogyprvfdblta"

L'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.rejoindre
"BC1U0HF3ZQBTQHTYN72VXRLWS6GL4KPAGPDK98UAWSJIJFNEIMCOZEY5ROMVDX"

Supposons 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].rejoindre
=> "ncnerkw78ms"

Mé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 et
=> vrai

Générer une valeur de base64 aléatoire comme:

Securrentandom.base64
=> "cxzpk1zbbbc / odu1fsapwg =="

Pour Hex, entrez:

Securrentandom.hexagonal
=> "86dc7bcec3962153ef36585696920f"

Enfin, en utilisant des octets:

Securrentandom.random_bytes
=> "\ xe6) \ x8e \ xf4 \ xd9 \ xe1w \ x1du \ xa2 \ x7f \ x86 \ x97z \ b."

Fermeture

Ce guide couvre comment générer des valeurs aléatoires dans Ruby à l'aide de méthodes et de modules prédéfinis.