random.h File Reference
Random number generator. More...
#include "host.h"
Data Structures | |
struct | VlRand |
Random numbber generator state. More... | |
Functions | |
Setting and reading the state | |
void | vl_rand_init (VlRand *self) |
Initialise random number generator. | |
void | vl_rand_seed (VlRand *self, vl_uint32 s) |
Seed the state of the random number generator. | |
void | vl_rand_seed_by_array (VlRand *self, vl_uint32 const key[], vl_size keySize) |
Seed the state of the random number generator by an array. | |
Generate random numbers | |
vl_uint64 | vl_rand_uint64 (VlRand *self) |
Generate a random UINT64. | |
vl_int64 | vl_rand_int63 (VlRand *self) |
Generate a random INT63. | |
vl_uint32 | vl_rand_uint32 (VlRand *self) |
Generate a random UINT32. | |
vl_int32 | vl_rand_int31 (VlRand *self) |
Generate a random INT31. | |
double | vl_rand_real1 (VlRand *self) |
Generate a random number in [0,1]. | |
double | vl_rand_real2 (VlRand *self) |
Generate a random number in [0,1) | |
double | vl_rand_real3 (VlRand *self) |
Generate a random number in (0,1) | |
double | vl_rand_res53 (VlRand *self) |
Generate a random number in [0,1) with 53-bit resolution. | |
vl_uindex | vl_rand_uindex (VlRand *self, vl_uindex range) |
Generate a random index in a given range. |
Detailed Description
This module implements the popular Mersenne Twister algorithm (MATLAB random generator from version 7.4).
Overview
A random number generator can be initalized by
VlRand rand ; vl_rand_init (&rand) ;
VlRand is a simple structure holding the state of the random number generator. The generator can be seeded by vl_rand_seed and vl_rand_seed_by_array. For intsance:
vl_rand_seed (&rand, clock()) ;
The generator can be used to obtain random quantities of various types:
- vl_rand_int31, vl_rand_uint32 for 32-bit random integers;
- vl_rand_real1 for a double in [0,1];
- vl_rand_real2 for a double in [0,1);
- vl_rand_real3 for a double in (0,1);
- vl_rand_res53 for a double in [0,1) with high resolution.
There is no need to explicitly destroy a VlRand instance.
Function Documentation
void vl_rand_init | ( | VlRand * | self | ) |
- Parameters:
-
self number generator.
- Parameters:
-
self random number generator.
- Returns:
- a random number in [0, 0x7fffffff].
- Parameters:
-
self random number generator.
- Returns:
- a random number in [0, 0x7fffffffffffffff].
double vl_rand_real1 | ( | VlRand * | self | ) | [inline] |
- Parameters:
-
self random number generator.
- Returns:
- a random number.
double vl_rand_real2 | ( | VlRand * | self | ) | [inline] |
- Parameters:
-
self random number generator.
- Returns:
- a random number.
double vl_rand_real3 | ( | VlRand * | self | ) | [inline] |
- Parameters:
-
self random number generator.
- Returns:
- a random number.
double vl_rand_res53 | ( | VlRand * | self | ) | [inline] |
- Parameters:
-
self random number generator.
- Returns:
- a random number.
- Parameters:
-
self random number generator. key array of numbers. keySize length of the array.
- Parameters:
-
self random number generator. range range.
- Returns:
- an index sampled uniformly at random in the interval [0,
range
- 1]
- Remarks:
- Currently, this function uses a simple algorithm that may yield slightly biased samples if
range
is not a power of two.
- Parameters:
-
self random number generator.
- Returns:
- a random number in [0, 0xffffffff].