La Génération Aléatoire Des Chaînes
Je veux générer des chaînes de la manière suivante: ABCDE1234E
, j'.e chaque chaîne contient 5 Personnages, 4 Chiffres, puis 1 Char.
J'ai trouvé une façon de créer ce en utilisant le code suivant.
library(random)
string_5 <- as.vector(randomStrings(n=5000, len=5, digits=FALSE, upperalpha=TRUE,
loweralpha=FALSE, unique=TRUE, check=TRUE))
number_4 <- as.vector(randomNumbers(n=5000, min=1111, max=9999, col=5, base=10, check=TRUE))
string_1 <- as.vector(randomStrings(n=5000, len=1, digits=FALSE, upperalpha=TRUE,
loweralpha=FALSE, unique=FALSE, check=TRUE))
PAN.Number <- paste(string_5,number_4,string_1,sep = "")
Mais ces fonctions prennent beaucoup de temps et le random
bibliothèque a besoin d'une connexion réseau.
> system.time(string_5 <- as.vector(randomStrings(n=5000, len=5, digits=FALSE, upperalpha=TRUE,
+ loweralpha=FALSE, unique=TRUE, check=TRUE)))
user system elapsed
0.07 0.00 3.18
Est il une méthode que je pourrais essayer de réduire le temps d'exécution?
J'ai aussi essayé d'utiliser sample()
mais je ne pouvais pas le comprendre.
OriginalL'auteur Nikhil Kumar | 2017-03-11
Vous devez vous connecter pour publier un commentaire.
À l'aide de "stringi" comme suggéré par @akrun sera plus rapide, mais la suite est aussi très rapide et ne nécessite pas de paquets supplémentaires:
Exemple de sortie:
OriginalL'auteur A5C1D2H2I1M1N2O1R2T1
Nous pouvons utiliser
stri_rand_strings
destringi
Ou de manière plus compacte
Repères
A été en mesure de reproduire les timings de même pour une partie de la sortie attendue de l'aide de l'OP de la méthode
OriginalL'auteur akrun
Vous pouvez directement effectuer ce que vous voulez:
Échantillon aléatoire de 5 lettres majuscules
Exemple 4 chiffres
Exemple 1 aléatoire lettre majuscule
Ce sera plus facile à contrôler, et ne prendra pas aussi longtemps.
LETTERS
).merci. Je ne le savais pas. Modifier en conséquence.
OriginalL'auteur Shahar Bental
Votre problème de performance vient de l'utilisation de la
random
paquet en premier lieu: il est compréhensible que vous pourriez trouver lerandom::randomStrings()
la fonction de recherche sur internet et je pense que c'est une bonne façon de générer des chaînes aléatoires pour les utiliser dans un programme, mais lerandom
paquet est pas conçus pour la programmation à usage général. Il fonctionne par l'interrogation de la RANDOM.ORG serveur, qui est intrinsèquement plus lent que R est construit pseudo-générateurs de nombres aléatoires.De l'un des vignettes aléatoires paquet:
Noter que la plupart de ces exemples sont sur le semis ou initialisation (ce sont des synonymes) R intégré de pseudo-générateurs de nombres aléatoires, plutôt que de les remplacer ...
OriginalL'auteur Ben Bolker