我有项目集合(ActiveRecord_AssociationRelation)。
我需要从每个集合中随机选择一个项目,但它应该在第二次和第三次选择相同的项目等。
我正在考虑某种单向算法,例如散列。例如,也许基于集合的长度,比如 50,它总是会生成数字 34。
知道我怎么能做到这一点吗?
我有项目集合(ActiveRecord_AssociationRelation)。
我需要从每个集合中随机选择一个项目,但它应该在第二次和第三次选择相同的项目等。
我正在考虑某种单向算法,例如散列。例如,也许基于集合的长度,比如 50,它总是会生成数字 34。
知道我怎么能做到这一点吗?
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)