如何在Ruby(非Rails)中从数组中随机选择一个项目?

11

我有一个国家数组:

@countries = ["Canada", "Denmark", "Germany", "Isle of Man", "Namibia", "Qatar", "South Africa",  "United Kingdom","United States"]

我正在构建一些随机数据用于测试,就像这样:

@test = [{ :name   => "AAA -"+Faker::Name.name,  :country => @countries.???? ....}]

我该如何从@countries哈希中获取一个随机值?

@countries.rand(mlen)

无法运行并返回NoMethodError: private methodrand' called for #`。


2
为了以后的参考,你应该将国家数据结构称为“数组”,而不是“哈希表”。 - Andrew Hubbs
1
熟悉ArrayEnumerable中的所有方法是很好的,这将为您节省大量的精力并使您的程序更加简洁! - Mark Thomas
谢谢 - 我迷路了一会儿。 - Gary
2个回答

34

使用 Array#sample

@countries = ["Canada", "Denmark", "Germany", "Isle of Man", "Namibia", "Qatar", "South Africa",  "United Kingdom","United States"]

random_country = @countries.sample
# => "Canada"

random_country = @countries.sample
# => "United Kingdom"

非常好,谢谢。我尝试了rand函数,但它是一个私有方法。Ruby有许多隐藏的宝石。 - Gary
对于Ruby 1.8.7版本,它的Array#choice方法是这样的。 - robd

4
你还可以使用 random_country = @countries.shuffle.first。该代码与随机选择一个国家的功能相同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接