Как получить случайное число в Ruby - PullRequest
763 голосов
/ 13 октября 2008

Как мне сгенерировать случайное число между 0 и n?

Ответы [ 18 ]

4 голосов
/ 23 августа 2015

вы можете сделать ранд (диапазон)

x = rand(1..5)
4 голосов
/ 24 декабря 2013

Эта ссылка будет полезна в этом отношении;

http://ruby -doc.org / ядро-1.9.3 / Random.html

И еще немного ясности относительно случайных чисел в рубине;

Генерация целого числа от 0 до 10

puts (rand() * 10).to_i

Создать число от 0 до 10 В более читабельном виде

puts rand(10)

Генерация числа от 10 до 15 В том числе 15

puts rand(10..15)

Неслучайные случайные числа

Каждый раз генерировать одну и ту же последовательность чисел программа запускается

srand(5)

Генерация 10 случайных чисел

puts (0..10).map{rand(0..10)}
2 голосов
/ 11 марта 2016

Как насчет этого?

num = Random.new
num.rand(1..n)
2 голосов
/ 11 марта 2016

Может быть, это поможет вам. Я использую это в моем приложении

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

У меня отлично работает

2 голосов
/ 23 января 2015

Попробуйте array#shuffle метод рандомизации

array = (1..10).to_a
array.shuffle.first
2 голосов
/ 16 февраля 2017

Простой способ получить случайное число в рубине:

def random    
  (1..10).to_a.sample.to_s
end
0 голосов
/ 30 ноября 2018

использовать функцию 'rand' Just Like this

rand(10)

0 голосов
/ 13 октября 2008

Не забудьте сначала посеять ГСЧ с помощью srand () .

...