生成一个由七个数字组成的随机数。

9

如何生成一个范围在一百万到一千万之间的随机数?

rand(10) 可以用,但是我尝试了 rand(1..10) ,它不起作用。

6个回答

13

拿你的基础数字1,000,000,加上0到你的最大值之间的一个随机数 - 起始数字:

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

我正在使用 Ruby 1.8.7,Random 似乎不存在。它是一个 gem 吗? - Blankman
@Blankman:你尝试过使用require 'random',并检查它是否仅限于1.9.2吗? - Andrew Grimm
1.8.7版本没有Random库,该库在1.9.2及以上版本中才有。安装backports gem即可在1.8.7中继承该库,以及其他许多好用的功能。 - the Tin Man
安装回溯的后果是什么?(如果有的话) - Blankman
4
请使用 rand,而不是 Random.rand。它可以在 1.6.0 版本及更早的版本中使用。 - Joshua Cheek

6

这是一个实例方法:

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

2
1_000_000...10_000_000 更符合 Ruby 的风格。 - sawa

3
我认为这样更易读:

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

1
或者,如果性能不是问题,而且您不想计算零:
(0...7).map { |i| rand((i == 0 ? 1 : 0)..9) }.join.to_i

需要一种避免零的方法。 - Tom Hammond

1

这将生成一个介于 1,000,000 和 9,999,999 之间的随机数。

rand(10_000_000-1_000_000)+1_000_000

这在1.8.7中可用,无需任何宝石(后备等)。


0

使用 Ruby 1.8.7 兼容的另一种选择:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接