Care should be taken with this method not to encounter the
birthday problem, described
https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/.
Since the sitmo
threefry
, this currently generates
one random deviate from the uniform distribution to seed the
engine threefry
and then run the code.
Arguments
- df1, df2
degrees of freedom.
Inf
is allowed.- n
number of observations. If
length(n) > 1
, the length is taken to be the number required.- ncores
Number of cores for the simulation
rxnorm
simulates using the threefry sitmo generator;
Details
Therefore, a simple call to the random number generated followed by a second call to random number generated may have identical seeds. As the number of random number generator calls are increased the probability that the birthday problem will increase.
The key to avoid this problem is to either run all simulations in the
rxode2
environment once (therefore one seed or series of seeds
for the whole simulation), pre-generate all random variables
used for the simulation, or seed the rxode2 engine with rxSetSeed()
Internally each ID is seeded with a unique number so that the results do not depend on the number of cores used.
Examples
## Use threefry engine
rxf(0.5, 0.5, n = 10) # with rxf you have to explicitly state n
#> [1] 5.678346e-05 2.005725e-01 7.297065e+00 6.292906e-01 8.074573e-01
#> [6] 1.768955e-03 8.977122e-03 1.198314e-05 1.309745e-01 2.286014e+02
rxf(5, 1, n = 10, ncores = 2) # You can parallelize the simulation using openMP
#> [1] 1.5725060 750.8712711 0.4891759 1027.8595045 493.6965182
#> [6] 2542.7594178 0.3760492 0.4362499 24.2308933 0.9622635
rxf(1, 3)
#> [1] 0.2139943