如何在0和n之间生成一个随机数
使用rand(范围)
根据Ruby随机数:
如果您需要一个随机整数来模拟六面模具的滚动,您可以使用:
1+rand(6)。掷骰子可以用2+rand(6)+rand(6)来模拟最后,如果您只需要一个随机浮点,只需调用
rand,不带任何参数
正如马克·安德烈·拉福琼(Marc AndréLafortune)在下面的回答中提到的(向上投票),Ruby 1.9.2有自己的Random类(这是马克·安德烈自己帮助调试的,因此是该功能的1.9.2目标)
例如,在这个游戏中,您需要猜10个数字,您可以使用以下方法初始化它们:
10.times.map{20+Random.rand(11)}
#=>;[26, 26, 22, 20, 30, 26, 23, 23, 25, 22]
注:
-
使用
Random.new.rand(20..30)(使用Random.new)通常不是一个好主意,正如马克·安德烈·拉福琼(Marc AndréLafortune)在他的回答中(再次)详细解释的那样 -
但是,如果您不使用
Random.new,那么类方法rand只取max值,而不是范围,正如banister在注释中(以及Random的文档中所指出的那样)。只有实例方法可以采用范围,如生成一个7位数的随机数所示
这就是为什么Random.new.rand(20..30)的等价物是20+Random.rand(11),因为Random.rand(int)返回“一个大于或等于零且小于参数的随机整数”20..30包括30,我需要找出一个介于0和11之间的随机数,不包括11