例如,要生成3到10之间的随机数,我使用:rand(8) + 3

有没有更好的方法(比如rand(3,10)) ?


当前回答

def random_int(min, max)
    rand(max - min) + min
end

其他回答

Random.new.rand(a..b) 

a是最小值,b是最大值。

def random_int(min, max)
    rand(max - min) + min
end

下面是#sample和#rand的快速基准测试:

irb(main):014:0* Benchmark.bm do |x|
irb(main):015:1*   x.report('sample') { 1_000_000.times { (1..100).to_a.sample } }
irb(main):016:1>   x.report('rand') { 1_000_000.times { rand(1..100) } }
irb(main):017:1> end
       user     system      total        real
sample  3.870000   0.020000   3.890000 (  3.888147)
rand  0.150000   0.000000   0.150000 (  0.153557)

所以选rand(a。b)是正确的

rand(3..10)

内核#兰德

当max是一个Range时,rand返回一个Range .member?(number) == true的随机数。

10和10**24

rand(10**24-10)+10