JuliaRandom / JuliaRandom/RandomNumbers.jl
Question on RNGs for use in parallel simulations
- 主要言語
- Julia
- スター
- 100
- フォーク
- 23
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
This is a question rather than an issue. I hope that's OK to ask here.
I would like to use a RNG for parallel simulations, and so want statistically independent RNGs for each worker process.
For `Base.Random.MersenneTwister`, I use something like this:
```
rng = Base.Random.MersenneTwister(0)
rngseed = Base.Random.make_seed()
srand(rng, rngseed)
rngs = randjump(rng, numtrials)
f(trial, rng) = ...
pmap(f, 1:numtrials, rngs)
```
I would like to use a RNG from the `Random123` family.
Is this a good choice for parallel sims?
My code would be something like:
```
rng = RandomNumbers.Random123.Threefry4x()
rngseed = RandomNumbers.gen_seed(rng)
srand(rng, rngseed)
rngs = Vector{typeof(rng)}(numtrials)
for trial = 1:numtrials
rngs[trial] = copy(rng)
RandomNumbers.Random123.set_counter!(rngs[trial], trial)
end
f(trial, rng) = ...
pmap(f, 1:numtrials, rngs)
```
Is using `set_counter!` this way the right approach to give independent RNGs?
Will it work for all RNGs in the Random123 family?
Why would I choose 2x or 4x version?
Which particular RNG would you recommend?
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
評価
この issue はまだ評価されていません。