例如,要生成3到10之间的随机数,我使用:rand(8) + 3

有没有更好的方法(大约rand(3, 10)个)?

推荐答案

更新:Ruby 1.9.3 Kernel#rand也接受范围

rand(a..b)

http://www.rubyinside.com/ruby-1-9-3-introduction-and-changes-5428.html

转换为数组可能太贵,而且没有必要.


(a..b).to_a.sample

[*a..b].sample

Array#sample

Standard in Ruby 1.8.7+.
Note: was named #choice in 1.8.7 and renamed in later versions.

但无论如何,生成数组需要资源,而您已经编写的解决方案是最好的.

Ruby相关问答推荐

Ruby Case语句和固定,不适用于attr_reader

如何查询哪些RuboCop规则适用于文件?

如何使用 HEREDOC 作为参数传递给方法?

Rubymine - 启用行号

each_with_index_do 从 1 开始索引

如何拯救 Ruby 中的 eval?

Coffeescript 中等效的 Ruby .times

Ruby:如何判断字符是大写还是小写

在 Ruby 早期转义 .each { } 迭代

如何在两个浮点数之间的范围内最好地创建一个随机浮点数

Ruby 中的 Fail vs. raise:我们真的应该相信风格指南吗?

Broken pipe (Errno::EPIPE)

在本地文件夹中安装 gem

Ruby 多维数组

Sinatra 登录?

我的Ruby在哪里?

如何在不使用循环的情况下按数组中的计数分组

了解 ruby​​-prof 输出

正则表达式,如何匹配多行?

gem 安装失败并出现 openssl 失败