在ruby/rails中生成n个唯一的随机整数

Vic*_*tor 1 ruby ruby-on-rails

我试图在1和最大之间生成n个唯一的随机数

我尝试了以下代码但不起作用(返回重复的数字)

r = [ ]
n.times { v = rand(max) while r.include? v ; r << v}
Run Code Online (Sandbox Code Playgroud)

它出什么问题了?谢谢

添加:

最多是数千

n是10

gle*_*ald 8

不,不,不随机生成然后检查,生成uniq数字,然后随机排序!

(1..max).sort_by{rand}
Run Code Online (Sandbox Code Playgroud)

或者,在1.9中:

(1..max).to_a.shuffle
Run Code Online (Sandbox Code Playgroud)