Comment générer un nombre aléatoire entre 0
y n
?
range.to_a.sample
est une idée terrible quand l'échantillon est grand.
Comment générer un nombre aléatoire entre 0
y n
?
Ce lien va vous être utile à ce sujet ;
http://ruby-doc.org/core-1.9.3/Random.html
Et un peu plus de clarté ci-dessous sur les nombres aléatoires dans ruby ;
Générer un nombre entier de 0 à 10
puts (rand() * 10).to_i
Générer un nombre de 0 à 10 De façon plus lisible
puts rand(10)
Générer un nombre de 10 à 15 Y compris 15
puts rand(10..15)
Numéros aléatoires non aléatoires
Générer la même séquence de chiffres à chaque fois que que le programme est exécuté
srand(5)
Générer 10 numéros aléatoires
puts (0..10).map{rand(0..10)}
Vous pouvez également suivre ce blog pour obtenir une image très claire, étape par étape, sur les numéros aléatoires en ruby ; sitepoint.com/tour-random-ruby
Peut-être que ça vous aidera. J'utilise ceci dans mon application
https://github.com/rubyworks/facets
class String
# Create a random String of given length, using given character set
#
# Character set is an Array which can contain Ranges, Arrays, Characters
#
# Examples
#
# String.random
# => "D9DxFIaqR3dr8Ct1AfmFxHxqGsmA4Oz3"
#
# String.random(10)
# => "t8BIna341S"
#
# String.random(10, ['a'..'z'])
# => "nstpvixfri"
#
# String.random(10, ['0'..'9'] )
# => "0982541042"
#
# String.random(10, ['0'..'9','A'..'F'] )
# => "3EBF48AD3D"
#
# BASE64_CHAR_SET = ["A".."Z", "a".."z", "0".."9", '_', '-']
# String.random(10, BASE64_CHAR_SET)
# => "xM_1t3qcNn"
#
# SPECIAL_CHARS = ["!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "-", "_", "=", "+", "|", "/", "?", ".", ",", ";", ":", "~", "`", "[", "]", "{", "}", "<", ">"]
# BASE91_CHAR_SET = ["A".."Z", "a".."z", "0".."9", SPECIAL_CHARS]
# String.random(10, BASE91_CHAR_SET)
# => "S(Z]z,J{v;"
#
# CREDIT: Tilo Sloboda
#
# SEE: https://gist.github.com/tilo/3ee8d94871d30416feba
#
# TODO: Move to random.rb in standard library?
def self.random(len=32, character_set = ["A".."Z", "a".."z", "0".."9"])
chars = character_set.map{|x| x.is_a?(Range) ? x.to_a : x }.flatten
Array.new(len){ chars.sample }.join
end
end
Cela fonctionne bien pour moi
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.
1 votes
Utilisation de
srand <some_number>
avant d'écrirerand
vous donnera une séquence pseudo-aléatoire déterministe (c'est-à-dire répétable), si vous en avez besoin. ruby-doc.org/core-2.5.6/Random.html#method-c-srand