How can I produce a ran开发者_运维百科dom number in a range from 1 million to 10 million?
rand(10)
works, I tried rand(1..10)
and that didn't work.
Take your base number, 1,000,000 and add a random number from 0 up to your max - starting number:
1_000_000 + Random.rand(10_000_000 - 1_000_000) #=> 3084592
It's an instance method:
puts Random.new.rand(1_000_000..10_000_000-1)
I find this more readable:
7.times.map { rand(1..9) }.join.to_i
This will generate a random number between 1,000,000 and 9,999,999.
rand(10_000_000-1_000_000)+1_000_000
This works in 1.8.7 without any gems(backports, etc).
Or, in case performance is not an issue and you don't want to count zeros:
(0...7).map { |i| rand((i == 0 ? 1 : 0)..9) }.join.to_i
Another option with ruby 1.8.7 compatibility:
rand(9999999999).to_s.center(10, rand(9).to_s).to_i
精彩评论