0

我有项目集合(ActiveRecord_AssociationRelation)。

我需要从每个集合中随机选择一个项目,但它应该在第二次和第三次选择相同的项目等。

我正在考虑某种单向算法,例如散列。例如,也许基于集合的长度,比如 50,它总是会生成数字 34。

知道我怎么能做到这一点吗?

4

1 回答 1

4

Arraysample方法将随机数生成器作为(命名)参数,因此您可以执行以下操作:

rng = Random.new(8) # The seed (8) is just a meaningles number.
a = ("a".."z").to_a
p a.sample(random: rng) # "d"
p a.sample(random: rng) # "u"

下一次它将再次导致“d”和“u”。

如果需要可重复的随机序列,您只需要一个种子随机数生成器

rng2 = Random.new(10)
num = rng2.rand(collection.size)
于 2016-06-02T18:13:28.987 回答