关于ruby:生成一个7位数的随机数

generate a random number with 7 digits

我怎样才能产生100万到1000万之间的随机数呢?

兰德(10)行,我试过兰德(1.10),但没用。


取您的基数1000000,然后添加一个从0到最大起始数的随机数:

1
 1_000_000 + Random.rand(10_000_000 - 1_000_000) #=> 3084592


它是一个实例方法:

1
puts Random.new.rand(1_000_000..10_000_000-1)


我觉得这个更易读:

1
7.times.map { rand(1..9) }.join.to_i


或者,如果性能不是问题,而且您不想计算零:

1
(0...7).map { |i| rand((i == 0 ? 1 : 0)..9) }.join.to_i


这将生成一个介于1000000和9999999之间的随机数。

1
rand(10_000_000-1_000_000)+1_000_000

这项工作在1.8.7没有任何宝石(端口等)。


另一个与Ruby1.8.7兼容的选项:

rand(9999999999).to_s.center(10, rand(9).to_s).to_i