如何使用Ruby在特定范围内生成随机数?

And*_*ico 11 ruby

我试图在1900年到1980年间用Ruby随机获得一年.

到目前为止,我有:

puts 'the year was: ' +  1900.to_s + rand(1980).to_s
Run Code Online (Sandbox Code Playgroud)

但这只是添加了1900和一个从1979年到1979年的随机数,看起来像19001947.

我想我错过了一些愚蠢的东西,但任何人都可以放弃任何光明吗?

小智 27

Ruby 1.9.3

1.9.3p0 :001 > rand(1900..1980)
 => 1946 
1.9.3p0 :002 > rand(1900..1980)
 => 1929 
1.9.3p0 :003 > rand(1900..1980)
 => 1934 
Run Code Online (Sandbox Code Playgroud)


Bri*_*ter 14

试一试

(1900 + rand(81)).to_s
Run Code Online (Sandbox Code Playgroud)

为路人清楚

首先,有关字符串连接的问题.问题中的原始代码将两个字符串(包含数字)连接在一起.例:

"1900"+"1920"="19001920"

其次,存在生成随机数范围的问题.在这种情况下,由于我们只想要80年的范围,我们想要使用rand(81)而不是rand(1980).然后我们将结果添加到基数中,这将在1900年到1980年之间给出一个随机数.