To generate a random number between 3 and 10, for example, I use: rand(8) + 3
Is there a nicer way to do this (something like rand(3, 10)
) ?
To generate a random number between 3 and 10, for example, I use: rand(8) + 3
Is there a nicer way to do this (something like rand(3, 10)
) ?
Just note the difference between the range operators:
And here is a quick benchmark for both
#sample
and#rand
:So, doing
rand(a..b)
is the right thingWhere
a
is your lowest value andb
is your highest value.UPDATE: Ruby 1.9.3
Kernel#rand
also accepts rangeshttp://www.rubyinside.com/ruby-1-9-3-introduction-and-changes-5428.html
Converting to array may be too expensive, and it's unnecessary.
Or
Array#sample
Standard in Ruby 1.8.7+.
Note: was named #choice in 1.8.7 and renamed in later versions.
But anyway, generating array need resources, and solution you already wrote is the best, you can do.
Kernel#rand