822 votes

Générer une couleur aléatoire

Je suis actuellement à l'aide de la suivante pour générer un 8 caractère pseudo-aléatoire majuscules chaîne de caractères [A-Z]

value = ""; 8.times{value  << (65 + rand(25)).chr}

mais il semble junky, et comme il n'est pas un état unique, il ne peut pas être passé comme argument. Pour obtenir un cas mixte chaîne de caractères [a-zA-Z] je pirater avec

value = ""; 8.times{value << ((rand(2)==1?65:97) + rand(25)).chr}

Ça ressemble juste à la corbeille. Quelqu'un a une meilleure méthode?

1037voto

Kent Fredric Points 35592
(0...8).map { (65 + rand(26)).chr }.join

Je passe trop de temps de parcours de golf.

(0...50).map { ('a'..'z').to_a[rand(26)] }.join

Pour beaucoup de bonnes WTFBBQ facteur.

Et un dernier qui est encore plus déroutant, mais plus souple et les déchets, moins de cycles:

o = [('a'..'z'), ('A'..'Z')].map { |i| i.to_a }.flatten
string = (0...50).map { o[rand(o.length)] }.join

854voto

christopherstyles Points 1443

Pourquoi ne pas utiliser SecureRandom?

require 'securerandom'
random_string = SecureRandom.hex

# outputs: 5b5cd0da3121fc53b4bc84d0c8af2e81

SecureRandom a aussi des méthodes pour:

  • base64
  • hex
  • random_bytes
  • random_number

voir: http://ruby-doc.org/stdlib-1.9.2/libdoc/securerandom/rdoc/SecureRandom.html

272voto

- Je l'utiliser pour la génération aléatoire URL amicale des chaînes de caractères.

rand(36**length).to_s(36)

Il génère des chaînes aléatoires de lettres minuscules a-z et 0-9. Ce n'est pas très personnalisable, mais elle est courte et propre.

135voto

Travis R Points 8935

D'autres ont mentionné quelque chose de similaire, mais il utilise l'URL de la fonction de sécurité.

require 'securerandom'
p SecureRandom.urlsafe_base64(5) #=> "UtM7aa8"
p SecureRandom.urlsafe_base64 #=> "UZLdOkzop70Ddx-IJR0ABg"
p SecureRandom.urlsafe_base64(nil, true) #=> "i0XQ-7gglIsHGV2_BNPrdQ=="

Le résultat peut contenir des A-Z, a-z, 0-9, "-" et "_". "=" est également utilisé si le rembourrage est vrai.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X