如何生成介于0和n之间的随机数?


当前回答

问题的最简单答案:

rand(0..n)

其他回答

这个怎么样?

num = Random.new
num.rand(1..n)

如果您不仅要寻找数字,还要寻找十六进制或uuid,那么值得一提的是,SecureRandom模块在1.9.2+中找到了从ActiveSupport到ruby内核的方法。因此,不需要完整的框架:

require 'securerandom'

p SecureRandom.random_number(100) #=> 15
p SecureRandom.random_number(100) #=> 88

p SecureRandom.random_number #=> 0.596506046187744
p SecureRandom.random_number #=> 0.350621695741409

p SecureRandom.hex #=> "eb693ec8252cd630102fd0d0fb7c3485"

它记录在这里:Ruby1.9.3-模块:SecureRandom(lib/SecureRandom.rb)

可以使用rand方法生成随机数。传递给rand方法的参数应为整数或范围,并返回范围内的相应随机数:

rand(9)       # this generates a number between 0 to 8
rand(0 .. 9)  # this generates a number between 0 to 9
rand(1 .. 50) # this generates a number between 1 to 50
#rand(m .. n) # m is the start of the number range, n is the end of number range

别忘了先用srand()为RNG种子。

此链接将对此有所帮助;

http://ruby-doc.org/core-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)}