生成一个7位数的随机数

如何生成100万到1000万的随机数。

兰德(10)工作,我尝试兰德(1..10),但没有奏效。

取你的基数1,000,000并添加一个从0到最大起始数字的随机数:

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

这是一个实例方法:

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

这将生成1,000,000到9,999,999之间的随机数。

 rand(10_000_000-1_000_000)+1_000_000 

这适用于1.8.7,没有任何gem(backports等)。

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

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

我发现这更具可读性:

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

兼容ruby 1.8.7的另一个选择:

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