[Ruby] Comment générer une chaîne de caractères d'alphabet aléatoire

introduction

・ C'est un mémorandum des connaissances rattrapées. ・ Je vous serais reconnaissant si vous pouviez signaler des erreurs.

Ce mot clé

・ Méthode To_a

Une méthode pour convertir les hachages, les objets range, etc. en tableaux. Source: [Ruby] Comprenons comment utiliser la méthode to_a

・ Méthode Shuffle

La méthode shuffle récupère les éléments du tableau en les échangeant aléatoirement. Source: Premier rubis! Acquérir / remplacer des séquences au hasard | sample / shuffle

・ Méthode Join

La méthode join est utilisée lorsque vous souhaitez combiner les éléments d'un tableau en une seule chaîne. La méthode join convertit chaque élément du tableau en chaîne et joint les arguments en tant que délimiteurs. Source: Les ingénieurs actifs expliquent comment utiliser la méthode de jointure de Ruby [pour les débutants]

Conclusion: écrivez comme ça

('a'..'z').to_a.shuffle[0..7].join

Essayez d'exécuter la commande dans le terminal. Entrez ʻirb` puis entrez la commande.

Terminal


munetomokazushi@mba ~ % irb
irb(main):001:0> ('a'..'z').to_a.shuffle[0..7].join
=> "yahxwgti"

Un alphabet aléatoire de 8 caractères a été produit.

Je vais regarder de plus près

Démonter.

irb(main):001:0> ('a'..'z')

Tout d'abord, décrivez que la plage va de la chaîne alphabétique `` a' à'z'. ..` est un objet Range. «..» inclut le dernier caractère, mais «...» n'inclut pas le dernier caractère. Mise en garde.

irb(main):001:0> ('a'..'z').to_a
=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]

Il est devenu un tableau avec la méthode .to_a.

irb(main):001:0> ('a'..'z').to_a.shuffle
=> ["o", "c", "q", "i", "m", "a", "k", "l", "t", "x", "z", "w", "n", "v", "b", "s", "h", "u", "r", "e", "g", "y", "f", "j", "p", "d"]

Le tableau a été mélangé avec la méthode shuffle. (Mélangé à chaque fois que vous courez)

irb(main):001:0> ('a'..'z').to_a.shuffle[0..7]
=> ["r", "f", "b", "x", "y", "m", "g", "t"]

J'obtiens le tableau mélangé pour 8 caractères depuis le début. Notez que le tableau commence à 0.

irb(main):001:0> ('a'..'z').to_a.shuffle[0..7].join
=> "yahxwgti"

Enfin, la méthode join a été utilisée pour combiner les éléments du tableau en une seule chaîne.

2020.8.24 PostScript

J'ai reçu un commentaire, alors merci de le citer et de l'ajouter. Merci, @ nodai2h_ITC!

Cette méthode ne génère pas une chaîne qui a le même caractère plus d'une fois, comme "agrjesao". Par exemple, si vous écrivez un programme pour le troisième jeu de Janken, et que vous écrivez un programme qui n'effectue pas de mouvement une seule fois, vous ne l'appelleriez pas un "mouvement aléatoire". En outre, cette méthode ne peut pas créer une chaîne alphabétique aléatoire de 30 caractères, par exemple, qui dépasse le nombre de caractères alphabétiques. Alors, que diriez-vous d'une méthode pour générer une "chaîne de caractères d'alphabet aléatoire" qui autorise les mêmes caractères?

chars = ('a'..'z').to_a # = *'a'..'z'Mais oui
8.times.map{ chars.sample }.join

Ce résultat ressemble à ceci.

irb(main):009:0> chars = ('a'..'z').to_a
=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
irb(main):010:0> 8.times.map{ chars.sample }.join
=> "bjtaniyw"
irb(main):011:0> 8.times.map{ chars.sample }.join
=> "ntbtrdml"
irb(main):012:0> 8.times.map{ chars.sample }.join
=> "ajsgpcwn"
irb(main):013:0> 8.times.map{ chars.sample }.join
=> "vxdgakuc"
irb(main):014:0> 8.times.map{ chars.sample }.join
=> "xknqtmcq" #Le même alphabet apparaît deux fois. Il s'affiche correctement au hasard

Essayez de définir une méthode pour générer une chaîne aléatoire

# string_Définir la méthode de lecture aléatoire
def string_shuffle(s)
  s.split('').shuffle.join
end

#Essayez d'appeler
string_shuffle("foobar")
# string_Résultat de l'appel de la méthode shuffle
=> "fboora" 

Au fait

irb(main):005:0> ('Ah'..'Hmm').to_a.shuffle[0..7].join
=> "Gofukuporekariso"

Vous pouvez également utiliser hiragana.

Résumé

-Il peut également être utilisé lors de la création de sous-domaines aléatoires. -Lors de l'exécution sur la console, entrez rails c dans le terminal pour démarrer la console.

référence

[Ruby] Comprenons comment utiliser la méthode to_a Première fois Ruby! Acquérir / remplacer des séquences au hasard | sample / shuffle Les ingénieurs actifs expliquent comment utiliser la méthode de jointure de Ruby [pour les débutants]

Recommended Posts

[Ruby] Comment générer une chaîne de caractères d'alphabet aléatoire
Comment changer une chaîne dans un tableau en un nombre dans Ruby
[Android] Comment convertir une chaîne de caractères en resourceId
Comment générer une clé primaire à l'aide de @GeneratedValue
Comment générer automatiquement un constructeur dans Eclipse
Comment générer manuellement un JWT avec Knock in Rails
[Java] Comment découper une chaîne de caractères caractère par caractère
Expression régulière Ruby Extrait d'une chaîne de caractères spécifique vers une chaîne de caractères
Comment utiliser le retour Ruby
Convertir en chaîne Ruby Leet
Comment laisser un commentaire
[Ruby] Comment commenter
Comment utiliser String [] args
Ruby: Comment utiliser les cookies
Comment insérer une vidéo
Comment créer une méthode
Découpez une chaîne de rubis
[Ruby] Comment diviser chaque requête GraphQL en fichiers
Apprendre Ruby avec AtCoder 13 Comment créer un tableau à deux dimensions
Comment afficher des graphiques dans Ruby on Rails (LazyHighChart)
Comment itérer indéfiniment en Ruby
Comment créer un conteneur Java
Comment installer Ruby via rbenv
Comment utiliser Ruby on Rails
Comment signer Minecraft MOD
[Swift] Comment envoyer une notification
Comment créer un écran de démarrage
Comment faire un projet Maven
Comment utiliser la méthode Ruby inject
Comment créer un tableau Java
Comment exécuter l'IRB de Ruby (Ruby interactif)
Comment vérifier le contenu de la chaîne de caractères java de longueur fixe
Comment exécuter un contrat avec web3j
Comment trier une liste à l'aide du comparateur
Comment créer une requête à l'aide de variables dans GraphQL [Utilisation de Ruby on Rails]
[Mémo personnel] Comment interagir avec le générateur de nombres aléatoires en Java
[Basique] Comment écrire un auto-apprentissage Dockerfile ②
Comment insérer une vidéo dans Rails
Comment ajouter un nouveau hachage / tableau
Comment créer un référentiel Maven pour 2020
Longueur, taille, nombre de rubis Comment utiliser
Comment créer un robot Discord (Java)
Comment sortir une chaîne Java sur l'écran de la console
Comment obtenir la date actuelle sous forme de chaîne au format aaaaMMjj
[Java] Comment utiliser une sous-chaîne pour découper une partie d'une chaîne de caractères
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 6.x)
Extraire une partie d'une chaîne en Ruby