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

How do I generate a random number in a certain range with Ruby?

我想用Ruby在1900年到1980年之间随机获得一年。

到目前为止,我有:

1
puts 'the year was: ' +  1900.to_s + rand(1980).to_s

但这只是把1900和0-1979的随机数加在一起,看起来像19001947。

我想我错过了一些愚蠢的东西,但有人能开灯吗?


红宝石1.9

1
2
3
4
5
6
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
(1900 + rand(81)).to_s

为过路人让路

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

"1900" +"1920" ="19001920"

第二,有一个问题,随机数的范围正在生成。在这种情况下,因为我们只需要80年的时间范围,所以我们希望使用兰德(81),而不是兰德(1980)。然后我们得到这个结果,并把它加到基数上,这将给我们一个1900到1980年之间的随机数。


1
puts"The year was #{1900 + rand 81}"

红宝石1.8 +

1
2
3
(1900..1980).to_a[rand(80)]
# or little more Rubyistic
(1900..1980).to_a.shuffle.first

红宝石1.9 +

1
[*1900..1980].sample


是的:你得到的是+的"字符串链接"过载。试试(1900+rand(80)).to_s