R: Simulate chi-squared variable from threefry generator

rxchisq {RxODE} | R Documentation

## Simulate chi-squared variable from threefry generator

### Description

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.

### Usage

    rxchisq(df, n = 1L, ncores = 1L)

### Arguments

`df` | degrees of freedom (non-negative, but can be non-integer).
`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; `rxnormV` uses the vandercorput 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 run all simulations in the `RxODE` environment once (therefore one seed or series of seeds for the whole simulation) or to pre-generate all random variables used for the simulation.

Also care should be made that the computer you will be running on can run the same number of cores as you are running so they can reproduce your results.

### Value

chi squared random deviates

### Examples

    ## Use threefry engine

    rxchisq(0.5, n=10) # with rxchisq you have to explicitly state n
    rxchisq(5, n=10, ncores=2) # You can parallelize the simulation using openMP

    rxchisq(1)

    ## This example uses `rxchisq` directly in the model

    rx <- RxODE({
      a = rxchisq(2)
    })

    et <- et(1,id=1:2)

    s <- rxSolve(rx,et)

[Package RxODE version 1.0.9 Index]