Я хочу создать функцию, которая будет всегда возвращать одни и те же числа, если я введу параметр, запрашивающий детерминированный ответ, и в противном случае выдаст запрошенное число псевдослучайных чисел. К сожалению, единственный способ выяснить, как это сделать, - сбросить глобальное случайное начальное число, что нежелательно.
Есть ли способ, которым я могу установить начальное число случайных чисел для одного набора псевдослучайных чисел, не затрагивая глобальное начальное число или существующую последовательность вдоль последовательности псевдослучайных чисел этого начального числа?
Пример дела
using Random
function get_random(n::Int, deterministic::Bool)
if deterministic
Random.seed!(1234)
return rand(n)
else
return rand(n)
end
end
Random.seed!(4321)
# This and the next get_random(5,false) should give the same response
# if the Random.seed!(1234) were confined to the function scope.
get_random(5,false)
Random.seed!(4321)
get_random(5,true)
get_random(5,false)