在Ruby中生成非重复随机数

edd*_*ell 2 ruby random

我想生成一个介于100和999之间的唯一随机数序列.我想确保没有生成两次数字,以确保每个数字都是唯一的.这就是我想出的.这是行不通的.当我运行它时,屏幕只是空白.谁能帮我?

products = {}

def random_key(products)

  rand_key = rand(900) + 100

  while products.has_key?(rand_key)

    rand_key = rand(900) + 100

  end

end

puts random_key(products)
Run Code Online (Sandbox Code Playgroud)

Mar*_*bot 13

a = (100..999).to_a.shuffle 
Run Code Online (Sandbox Code Playgroud)

然后每次你需要一个新的身份证

new_id = a.pop
Run Code Online (Sandbox Code Playgroud)

这可以保证数字永远不会被重用.当然,当你用完阵列上的元素时,你会遇到问题.