Генерировать случайное число, то же самое каждый раз
У меня есть коллекции предметов (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)