生成随机数,每次都相同

时间:2016-06-02 17:40:55

标签: ruby-on-rails ruby random ruby-2.3

我有项目集合(ActiveRecord_AssociationRelation)。

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

我正在考虑某种单向算法,比如哈希算法。例如。也许根据集合的长度,让我们说50,它总是会产生数字34。

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

1 个答案:

答案 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)