如何生成介于0和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)

其他回答

这个怎么样?

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

您可以使用ruby rand方法,如下所示:

rand(n+1)

您需要使用n+1,因为rand方法返回任何大于或等于0但小于传递的参数值的随机数。

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

rand(6)    #=> gives a random number between 0 and 6 inclusively 
rand(1..6) #=> gives a random number between 1 and 6 inclusively

请注意,范围选项仅在更新(我相信是1.9+)的ruby版本中可用。

尝试array#shuffle方法进行随机化

array = (1..10).to_a
array.shuffle.first