2011-04-19 128 views

回答

13

把你的基數,100萬,且從0添加一個隨機數達到你的最大 - 起始號碼:

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

我使用紅寶石1.8.7,隨機不'似乎存在。它是一顆寶石嗎? – Blankman 2011-04-19 22:26:47

+0

@Blankman:你試過'require'random'',並且檢查它是否僅僅是1.9.2? – 2011-04-19 22:41:05

+0

1.8.7不具有隨機。它在1.9.2以上。安裝後端寶石,你會在1.8.7版本中繼承它,以及許多其他多汁善良。 – 2011-04-19 23:41:16

6

這是一個實例方法:

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

'1_000_000 ... 10_000_000'更多的是Ruby-ish。 – sawa 2011-04-19 22:24:27

+0

@sawa這是我的第一個版本,但它不包括1_000_000。 – steenslag 2011-04-19 22:30:27

1

,這將產生一個隨機數介於1,000,000和9,999,999之間。

rand(10_000_000-1_000_000)+1_000_000 

這工作在1.8.7沒有任何寶石(backports等)。

0

紅寶石1.8.7兼容性另一種選擇:

蘭特(9999999999).to_s.center(10,蘭特(9).to_s).to_i

1

或者,在情況下的性能是不是一個問題,你不想來算零:

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

需要一種避免零的方法 – 2015-06-13 14:49:27

1

我覺得這更容易閱讀:

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

更好,謝謝。 – Yimanei 2017-03-28 04:26:13