804 votes

Comment obtenir un nombre aléatoire en Ruby

Comment générer un nombre aléatoire entre 0 y n ?

1 votes

Utilisation de srand <some_number> avant d'écrire rand 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

6voto

sumit Points 259

Gamme = 10..50

rand(plage)

ou

gamme.à_un.échantillon

ou

gamme.to_a.shuffle (ceci mélangera tout le tableau et vous pouvez choisir un nombre aléatoire par le premier ou le dernier ou n'importe lequel de ce tableau pour choisir un nombre aléatoire)

0 votes

range.to_a.sample est une idée terrible quand l'échantillon est grand.

5voto

Scott Points 132

Vous pouvez faire rand(range)

x = rand(1..5)

4voto

Samar Kr Mishra Points 155

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)}

0 votes

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

4voto

ysk Points 12

Un moyen facile d'obtenir un nombre aléatoire en ruby est,

def random    
  (1..10).to_a.sample.to_s
end

2voto

amarradi Points 107

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

https://github.com/rubyworks/facets/blob/5569b03b4c6fd25897444a266ffe25872284be2b/lib/core/facets/string/random.rb

Cela fonctionne bien pour moi

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