我有这段代码 -
number1, number2, number3, number4, number5 = Array.new(5) { rand(99999)+1 }
如何确保每个号码都是唯一的? 另外 - 是否可以将所有数字输出为5位数?比如00147而不是147?
感谢您的帮助!
答案 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)) }