Ruby 从数组中选择唯一的随机数

Ruby 从数组中选择唯一的随机数,ruby,random,Ruby,Random,b是我想要的最大赢家 b.times do winner = participant[rand(participant.count)] end 我每次都需要产生一个独特的赢家。如何在不对代码进行太多更改的情况下实现这一点?已经有了一种方法。只需使用: 已经有了一种方法。只需使用: 您可以使用Array#delete_at删除指定索引处的项目并返回已删除的项目。我们现在可以确保曾经被选为赢家的物品永远不会再被选 # sample data participant = [ 1, 2, 3, 4

b
是我想要的最大赢家

b.times do
  winner = participant[rand(participant.count)]
end

我每次都需要产生一个独特的赢家。如何在不对代码进行太多更改的情况下实现这一点?

已经有了一种方法。只需使用:


已经有了一种方法。只需使用:

您可以使用
Array#delete_at
删除指定索引处的项目并返回已删除的项目。我们现在可以确保曾经被选为赢家的物品永远不会再被选

# sample data
participant = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
b = 3

# preserve the original array
p = participant.dup 

# pick winner
b.times do
    winner = p.delete_at(rand(participant.count))
end
您可以使用
Array#sample
(如建议)如果您的程序可以一次性获得所有获奖者

您可以使用
Array#delete_at
在指定索引处删除项目并返回删除的项目。我们现在可以确保曾经被选为赢家的物品永远不会再被选

# sample data
participant = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
b = 3

# preserve the original array
p = participant.dup 

# pick winner
b.times do
    winner = p.delete_at(rand(participant.count))
end

如果您的程序可以一次性获得所有优胜者,您可以使用
Array#sample
(如建议的那样)

什么是“最大优胜者”?比赛的最大优胜者数存储在b@Supertracer所以你实际上必须选b个赢家,而不是一个。是吗?@ndn谢谢你的回答解决了我的问题,是的,stefan你是correct@ndn是的,当然,谢谢Tona什么是“最大赢家”?比赛的最大赢家数存储在b@Supertracer所以你实际上必须选b个赢家,而不是一个。是吗?@ndn谢谢你的回答解决了我的问题,是的,stefan你是correct@ndn是的,当然,谢谢你