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

rxbeta(shape1, shape2, n = 1L, ncores = 1L)

## Arguments

shape1, shape2

non-negative parameters of the Beta distribution.

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 used to simulate with the vandercorput simulator, but since it didn't satisfy the normal properties it was changed to simple be an alias of rxnorm. It is no longer supported in rxode2({}) blocks

## Value

beta random deviates

## 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

# \donttest{

## Use threefry engine

rxbeta(0.5, 0.5, n = 10) # with rxbeta you have to explicitly state n
#>   0.23763376 0.91111774 0.02467619 0.41651772 0.29665576 0.99201112
#>   0.27869609 0.01454912 0.62256645 0.97567609
rxbeta(5, 1, n = 10, ncores = 2) # You can parallelize the simulation using openMP
#>   0.8671932 0.7582738 0.7997493 0.7997493 0.4104470 0.9533969 0.9221627
#>   0.9780483 0.9236705 0.9945127

rxbeta(1, 3)
#>  0.2646512

## This example uses rxbeta directly in the model

rx <- function() {
model({
a <- rxbeta(2, 2)
})
}

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

s <- rxSolve(rx, et)
#>
#>
#>
#>
#> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’
# }