红宝石。随机数发生器

时间:2016-11-11 06:21:24

标签: ruby random

我是Ruby的新手。我只是想知道是否有办法以下列方式创建随机数:

1)生成45个随机数。

2)生成的随机数最多只能重复5次

我尝试使用以下方法。

45.times do |x|
  puts x.rand(1..9)
end 

如何实现数字的最大出现次数为5?

1 个答案:

答案 0 :(得分:2)

我会做这样的事情:

Array.new(5) { (1..9).to_a }.flatten.shuffle

这将生成一个数组,其中所有数字形式1到9恰好存在5次并随机地对该数组进行洗牌。

根据您的需要,您可以按原样使用此数组,也可以使用pop下一个随机数:

numbers = Array.new(5) { (1..9).to_a }.flatten.shuffle

3.times do 
  puts numbers.pop
end

使用pop返回一个数字并将其从数组中删除。这意味着在45个圆圈后,numbers数组将为空。