如何在数组中获得不同的随机数?

时间:2013-11-28 17:34:36

标签: ruby random

我有这段代码 -

number1, number2, number3, number4, number5 = Array.new(5) { rand(99999)+1 }

如何确保每个号码都是唯一的? 另外 - 是否可以将所有数字输出为5位数?比如00147而不是147?

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

list = []
(list << '%05i' % (rand(99999)+1)).uniq! while list.length < 5
number1, number2, number3, number4, number5 = list

答案 1 :(得分:0)

def get_unique_random(n)
  a = []
  while n > 0 do
    r = "%05d" % (rand(99999)+1)
    (a << r; n -= 1) unless a.include?(r)
  end
  a
end

get_unique_random(5)

[编辑:我修复了我在编辑时引入的错误。 (曾经这样做过吗?)以前我曾经:

r = rand(99999)+1;
(a << "%05d" % r; n -= 1) unless a.include?(r)

我会把它留作练习来发现错误。]

答案 2 :(得分:0)

这对我来说似乎是最简单的方法。每个号码都保证是唯一的。

array = (1...99999).to_a
unique_randoms = 5.times.map { '%05i' % array.delete_at(rand(array.length)) }