如何在Ruby中获得随机数

如何在0n之间生成一个随机数

使用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

发表评论