例如,要生成3到10之间的随机数,我使用:rand(8) + 3
有没有更好的方法(比如rand(3,10)) ?
例如,要生成3到10之间的随机数,我使用:rand(8) + 3
有没有更好的方法(比如rand(3,10)) ?
当前回答
rand(3..10)
内核#兰德
当max是一个Range时,rand返回一个Range .member?(number) == true的随机数。
其他回答
rand(3..10)
内核#兰德
当max是一个Range时,rand返回一个Range .member?(number) == true的随机数。
Random.new.rand(a..b)
a是最小值,b是最大值。
更新:Ruby 1.9.3 Kernel#rand也接受范围
rand(a..b)
http://www.rubyinside.com/ruby-1-9-3-introduction-and-changes-5428.html
转换为数组的代价可能太大,而且没有必要。
(a..b).to_a.sample
Or
[*a..b].sample
数组#样品
标准的Ruby 1.8.7+。 注意:在1.8.7中被命名为#choice,在后续版本中被重命名。
但无论如何,生成数组需要资源,你已经写的解决方案是最好的,你可以做到。
def random_int(min, max)
rand(max - min) + min
end
你可以使用范围操作符。请注意这两种形式的区别:
3..10 # includes 10
3...10 # doesn't include 10