Mis*_*hko 188 ruby random range
例如,要生成3到10之间的随机数,我使用: rand(8) + 3
有没有更好的方法来做到这一点(类似的东西rand(3, 10))?
Nak*_*lon 320
更新:Ruby 1.9.3 Kernel#rand也接受范围
rand(a..b)
Run Code Online (Sandbox Code Playgroud)
http://www.rubyinside.com/ruby-1-9-3-introduction-and-changes-5428.html
转换为数组可能太昂贵了,而且没必要.
(a..b).to_a.sample
Run Code Online (Sandbox Code Playgroud)
要么
[*a..b].sample
Run Code Online (Sandbox Code Playgroud)
Ruby 1.8.7+标准版.
注意:在1.8.7中被命名为#choice并在更高版本中重命名.
但无论如何,生成数组需要资源,而你已经编写的解决方案是最好的,你可以做到.
小智 86
Random.new.rand(a..b)
Run Code Online (Sandbox Code Playgroud)
a您的最低值在哪里,b是您的最高价值.
Dor*_*ian 12
rand(3..10)
Run Code Online (Sandbox Code Playgroud)
当max是Range时,rand返回一个随机数,其中range.member?(number)== true.
Yan*_*iss 10
请注意范围运算符之间的区别:
3..10 # includes 10
3...10 # doesn't include 10
Run Code Online (Sandbox Code Playgroud)