Mir 1.0
Mir application programming interface
Random numbers generators

Macros

#define MIRML_RNG_MT19937   1
 
#define MIRML_RNG_GAUSS_BM   1
 
#define MIRML_RNG_GAUSS_ZIGGURAT   2
 
#define MIRML_RNG_GAMMA_MT   1
 

Typedefs

typedef struct mirml_rng_t mirml_rng_t
 

Functions

mirkl_error_tmirml_rng_init (mirml_rng_t **rng, int method, mirkl_uint64_t seed)
 
void mirml_rng_free (mirml_rng_t *rng)
 Free memory allocated for rng. More...
 
mirkl_uint64_t mirml_rng_uint64 (mirml_rng_t *rng)
 Generates uniform uint64 random number.
 
mirkl_uint32_t mirml_rng_uint32 (mirml_rng_t *rng)
 Generates uniform uint32 random number.
 
mirkl_uint64_t mirml_rng_uint64_scale (mirml_rng_t *rng, mirkl_uint64_t s)
 Generates uint64 random number and scales it to the range [0, s-1].
 
double mirml_rng_uniform (mirml_rng_t *rng)
 Generates random number in range [0,1)
 
double mirml_rng_uniform_scale (mirml_rng_t *rng, double mi, double ma)
 Generates random number in range [mi,ma)
 
double mirml_rng_uniformp (mirml_rng_t *rng)
 Generates random number in range (0,1)
 
mirkl_error_tmirml_rng_gauss_init (mirml_rng_t *rng, int method)
 
double mirml_rng_gauss (mirml_rng_t *rng, double sigma)
 
mirkl_error_tmirml_rng_gamma_init (mirml_rng_t *rng, int method)
 
double mirml_rng_gamma (mirml_rng_t *rng, double k, double theta)
 

Detailed Description

Macro Definition Documentation

◆ MIRML_RNG_GAMMA_MT

#define MIRML_RNG_GAMMA_MT   1

Methods for calculation of Gamma random variates

◆ MIRML_RNG_GAUSS_BM

#define MIRML_RNG_GAUSS_BM   1

Methods for calculation of Gaussian random variates

◆ MIRML_RNG_MT19937

#define MIRML_RNG_MT19937   1

Random number generators.

Function Documentation

◆ mirml_rng_free()

void mirml_rng_free ( mirml_rng_t *  rng)

Free memory allocated for rng.

Note
Pointer to rng is not valid after this function.

◆ mirml_rng_gamma()

double mirml_rng_gamma ( mirml_rng_t *  rng,
double  k,
double  theta 
)

Generates random variate from Gamma distribution with a shape parameter k and a scale parameter theta.

Warning
Depending on the method some other methods must be initialized: MIRML_RNG_GAMMA_MT requires initialization of gauss method.

◆ mirml_rng_gamma_init()

mirkl_error_t * mirml_rng_gamma_init ( mirml_rng_t *  rng,
int  method 
)

Initialize rng for generation random numbers from gamma distribution.

Parameters
[in]methodOne of MIRML_RNG_GAMMA_..., if 0 – default method MIRML_RNG_GAMMA_MT used.
Warning

◆ mirml_rng_gauss()

double mirml_rng_gauss ( mirml_rng_t *  rng,
double  sigma 
)

Generates random variate from Gaussian distribution with mean zero and standard deviation sigma.

◆ mirml_rng_gauss_init()

mirkl_error_t * mirml_rng_gauss_init ( mirml_rng_t *  rng,
int  method 
)

Initialize rng for generation random numbers from gaussian distribution.

Parameters
[in]methodOne of MIRML_RNG_GAUSS_..., if 0 – default method MIRML_RNG_GAUSS_BM used.

◆ mirml_rng_init()

mirkl_error_t * mirml_rng_init ( mirml_rng_t **  rng,
int  method,
mirkl_uint64_t  seed 
)

Allocate and init RNG structure.

Parameters
[in]methodOne of MIRML_RNG_..., if 0 – default method MIRML_RNG_MT19937 used.
[in]seedSeed value rng. If 0 – default value used (depends on the method).
Note
After using generator rng must be freed with mirml_rng_free.