5
假設我用srand(123)
種子123,並且運行rand()
X次。後來,我希望能夠重新啓動Julia並播種一個數字(或狀態),這樣當我再次運行rand()
時,如果我擁有種子123並運行rand()
X + 1次,那麼我將獲得該數字。有沒有什麼辦法可以做到這一點,還是我真的需要運行rand()
X來獲得我想要的狀態?有沒有辦法獲得隨機數發生器的狀態?
假設我用srand(123)
種子123,並且運行rand()
X次。後來,我希望能夠重新啓動Julia並播種一個數字(或狀態),這樣當我再次運行rand()
時,如果我擁有種子123並運行rand()
X + 1次,那麼我將獲得該數字。有沒有什麼辦法可以做到這一點,還是我真的需要運行rand()
X來獲得我想要的狀態?有沒有辦法獲得隨機數發生器的狀態?
如果在Retrieve RNG seed in julia呈現的自定義隨機數生成器的解決方案是不適合你可行的,我可以拿出最好的是複製的全局隨機數生成器的整體結構:雖然我不是
function reset_global_rng(rng_state)
Base.Random.GLOBAL_RNG.seed = rng_state.seed
Base.Random.GLOBAL_RNG.state = rng_state.state
Base.Random.GLOBAL_RNG.vals = rng_state.vals
Base.Random.GLOBAL_RNG.idx = rng_state.idx
end
rs = deepcopy(Base.Random.GLOBAL_RNG)
println(rand(5))
# [0.301558,0.602108,0.220952,0.0338732,0.553414]
reset_global_rng(rs)
println(rand(5))
# [0.301558,0.602108,0.220952,0.0338732,0.553414]
100%確定它不會與random.jl中的dsfmt_gv_srand()
進行交互。
是的,我只需要改變評論中提到的東西。 – amrods