我试图在1900年到1980年之间随机获得Ruby。
到目前为止,我有:
puts 'the year was: ' + 1900.to_s + rand(1980).to_s
但这只是添加1900和一个从1979年0到1979年的随机数,看起来像19001947。
我认为我错过了一些愚蠢的事情,但任何人都可以放弃任何光明吗?
答案 0 :(得分: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
答案 1 :(得分:14)
试一试
(1900 + rand(81)).to_s
为路人清楚
首先,有关字符串连接的问题。问题中的原始代码将两个字符串(包含数字)连接在一起。例如:
“1900”+“1920”=“19001920”
其次,存在生成随机数范围的问题。在这种情况下,由于我们只想要80年的范围,我们想要使用rand(81)而不是rand(1980)。然后我们将结果添加到基数中,这将在1900年到1980年之间给出一个随机数。
答案 2 :(得分:4)
puts "The year was #{1900 + rand 81}"
答案 3 :(得分:2)
是的:你得到+的“字符串连接”重载。试试(1900+rand(80)).to_s
答案 4 :(得分:2)
Ruby 1.8 +
(1900..1980).to_a[rand(80)]
# or little more Rubyistic
(1900..1980).to_a.shuffle.first
Ruby 1.9 +
[*1900..1980].sample