我有项目集合(ActiveRecord_AssociationRelation)。
我需要从每个集合中随机选择一个项目,但它应该在第二次和第三次选择相同的项目等。
我正在考虑某种单向算法,比如哈希算法。例如。也许根据集合的长度,让我们说50,它总是会产生数字34。
知道我怎么能做到这一点吗?
答案 0 :(得分:4)
Array sample
方法将随机数生成器作为(命名)参数,因此您可以这样做:
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)