Генерировать случайное число, то же самое каждый раз

У меня есть коллекции предметов (ActiveRecord_AssociationRelation).

Мне нужно случайно выбрать один предмет из каждой коллекции, но он должен выбрать один и тот же предмет второй и третий раз и т. Д.

Я думаю о каком-то одностороннем алгоритме, таком как хеширование. Например, возможно, исходя из длины коллекции, скажем, 50, она всегда будет генерировать число 34.

Есть идеи, как мне это сделать?

1 ответ

Массив 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)
Другие вопросы по тегам