Mir 1.0
Mir application programming interface

Data Structures

struct  mirml_nr_gammadev_t_
 Generator of random deviates with gamma distribution. More...
 

Typedefs

typedef struct mirml_nr_rng_t mirml_nr_rng_t
 Random number generator.
 
typedef struct mirml_nr_gammadev_t_ mirml_nr_gammadev_t
 Generator of random deviates with gamma distribution.
 

Functions

mirkl_error_tmirml_nr_rng_init (mirml_nr_rng_t **rng, int method, mirkl_uint64_t seed)
 
void mirml_nr_rng_free (mirml_nr_rng_t *rng)
 Free memory allocated for rng. More...
 
mirkl_uint64_t mirml_nr_rng_uint64 (mirml_nr_rng_t *rng)
 Returns random 64-bit unsigned integer. More...
 
mirkl_uint32_t mirml_nr_rng_uint32 (mirml_nr_rng_t *rng)
 Returns random 32-bit unsigned integer.
 
double mirml_nr_rng_double (mirml_nr_rng_t *rng)
 Returns a random double-precision floating number in the range 0.0 to 1.0.
 
double mirml_nr_rng_expdev (mirml_nr_rng_t *rng, double beta)
 Generates random deviates with exponential distribution for given beta mean.
 
double mirml_nr_rng_logdev (mirml_nr_rng_t *rng, double mu, double sigma)
 Generates random deviates with logistic distribution for given mu and sigma.
 
double mirml_nr_rng_cauchydev (mirml_nr_rng_t *rng, double mu, double sigma)
 Generates random deviates with Cauchy distribution for given mu and sigma.
 
double mirml_nr_rng_normdev (mirml_nr_rng_t *rng, double mu, double sig)
 Generates random deviates with normal distribution for given mu and sigma.
 
mirkl_error_tmirml_nr_rng_gammadev_init (mirml_nr_gammadev_t *gdev, double alpha, double beta)
 Initialization of generator of random deviates with gamma distribution for given alpha and beta. More...
 
double mirml_nr_rng_gammadev (mirml_nr_rng_t *rng, mirml_nr_gammadev_t *gdev)
 Generates random deviates with gamma distribution. More...
 

Available random number generators

#define MIRML_NR_RNG_RAN   0
 Highest quality recommended generator. More...
 
#define MIRML_NR_RNG_RANQ1   1
 Good generator. More...
 
#define MIRML_NR_RNG_RANQ2   2
 Good generator with extended period. More...
 

Detailed Description

Macro Definition Documentation

◆ MIRML_NR_RNG_RAN

#define MIRML_NR_RNG_RAN   0

Highest quality recommended generator.

The period of the generator is approximately 3.138e57.

◆ MIRML_NR_RNG_RANQ1

#define MIRML_NR_RNG_RANQ1   1

Good generator.

The period of the generator is approximately 1.8e19 and thus can be used by an application that makes no more than 1e12 calls.

◆ MIRML_NR_RNG_RANQ2

#define MIRML_NR_RNG_RANQ2   2

Good generator with extended period.

The period of the generator is approximately 8.5e37. It can be used for all practical purposes.

Function Documentation

◆ mirml_nr_rng_free()

void mirml_nr_rng_free ( mirml_nr_rng_t rng)

Free memory allocated for rng.

Note
Pointer to rng is not valid after this function.

◆ mirml_nr_rng_gammadev()

double mirml_nr_rng_gammadev ( mirml_nr_rng_t rng,
mirml_nr_gammadev_t gdev 
)

Generates random deviates with gamma distribution.

Note
Before using this function gdev must be initialized using mirml_nr_rng_gammadev_init.

◆ mirml_nr_rng_gammadev_init()

mirkl_error_t * mirml_nr_rng_gammadev_init ( mirml_nr_gammadev_t gdev,
double  alpha,
double  beta 
)

Initialization of generator of random deviates with gamma distribution for given alpha and beta.

Note
alpha must be greater zero.

◆ mirml_nr_rng_init()

mirkl_error_t * mirml_nr_rng_init ( mirml_nr_rng_t **  rng,
int  method,
mirkl_uint64_t  seed 
)

Allocate and init RNG structure.

Parameters
[in]rngPointer to generator structure.
[in]methodOne of MIRML_NR_RNG_...
[in]seedGenerator seed.
Note
After using generator rng must be freed with mirml_nr_rng_free.

◆ mirml_nr_rng_uint64()

mirkl_uint64_t mirml_nr_rng_uint64 ( mirml_nr_rng_t rng)

Returns random 64-bit unsigned integer.

If you need a random integer between 1 and n (inclusive), say, then the expression 1 + mirml_nr_rng_uint64(&rng) % (n-1) is perfectly OK.