| SFMT
    1.4
    | 
SIMD oriented Fast Mersenne Twister(SFMT) pseudorandom number generator using C structure. More...
#include <stdio.h>#include <assert.h>#include <inttypes.h>#include "SFMT-params.h"Go to the source code of this file.
| Data Structures | |
| union | W128_T | 
| 128-bit data structure  More... | |
| struct | SFMT_T | 
| SFMT internal state.  More... | |
| Defines | |
| #define | PRIu64 "llu" | 
| #define | PRIx64 "llx" | 
| Typedefs | |
| typedef union W128_T | w128_t | 
| 128-bit data type | |
| typedef struct SFMT_T | sfmt_t | 
| Functions | |
| void | sfmt_fill_array32 (sfmt_t *sfmt, uint32_t *array, int size) | 
| This function generates pseudorandom 32-bit integers in the specified array[] by one call. | |
| void | sfmt_fill_array64 (sfmt_t *sfmt, uint64_t *array, int size) | 
| This function generates pseudorandom 64-bit integers in the specified array[] by one call. | |
| void | sfmt_init_gen_rand (sfmt_t *sfmt, uint32_t seed) | 
| This function initializes the internal state array with a 32-bit integer seed. | |
| void | sfmt_init_by_array (sfmt_t *sfmt, uint32_t *init_key, int key_length) | 
| This function initializes the internal state array, with an array of 32-bit integers used as the seeds. | |
| const char * | sfmt_get_idstring (sfmt_t *sfmt) | 
| This function returns the identification string. | |
| int | sfmt_get_min_array_size32 (sfmt_t *sfmt) | 
| This function returns the minimum size of array used for fill_array32() function. | |
| int | sfmt_get_min_array_size64 (sfmt_t *sfmt) | 
| This function returns the minimum size of array used for fill_array64() function. | |
| void | sfmt_gen_rand_all (sfmt_t *sfmt) | 
| This function fills the internal state array with pseudorandom integers. | |
| static uint32_t | sfmt_genrand_uint32 (sfmt_t *sfmt) | 
| This function generates and returns 32-bit pseudorandom number. | |
| static uint64_t | sfmt_genrand_uint64 (sfmt_t *sfmt) | 
| This function generates and returns 64-bit pseudorandom number. | |
| static double | sfmt_to_real1 (uint32_t v) | 
| converts an unsigned 32-bit number to a double on [0,1]-real-interval. | |
| static double | sfmt_genrand_real1 (sfmt_t *sfmt) | 
| generates a random number on [0,1]-real-interval | |
| static double | sfmt_to_real2 (uint32_t v) | 
| converts an unsigned 32-bit integer to a double on [0,1)-real-interval. | |
| static double | sfmt_genrand_real2 (sfmt_t *sfmt) | 
| generates a random number on [0,1)-real-interval | |
| static double | sfmt_to_real3 (uint32_t v) | 
| converts an unsigned 32-bit integer to a double on (0,1)-real-interval. | |
| static double | sfmt_genrand_real3 (sfmt_t *sfmt) | 
| generates a random number on (0,1)-real-interval | |
| static double | sfmt_to_res53 (uint64_t v) | 
| converts an unsigned 32-bit integer to double on [0,1) with 53-bit resolution. | |
| static double | sfmt_genrand_res53 (sfmt_t *sfmt) | 
| generates a random number on [0,1) with 53-bit resolution | |
| static double | sfmt_to_res53_mix (uint32_t x, uint32_t y) | 
| generates a random number on [0,1) with 53-bit resolution from two 32 bit integers | |
| static double | sfmt_genrand_res53_mix (sfmt_t *sfmt) | 
| generates a random number on [0,1) with 53-bit resolution using two 32bit integers. | |
SIMD oriented Fast Mersenne Twister(SFMT) pseudorandom number generator using C structure.
Copyright (C) 2006, 2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima University. Copyright (C) 2012 Mutsuo Saito, Makoto Matsumoto, Hiroshima University and The University of Tokyo. All rights reserved.
The 3-clause BSD License is applied to this software, see LICENSE.txt
typedef unsigned int uint32_t typedef unsigned long long uint64_t #define PRIu64 "llu" #define PRIx64 "llx"
| #define PRIu64 "llu" | 
| #define PRIx64 "llx" | 
| void sfmt_fill_array32 | ( | sfmt_t * | sfmt, | 
| uint32_t * | array, | ||
| int | size | ||
| ) | 
This function generates pseudorandom 32-bit integers in the specified array[] by one call.
The number of pseudorandom integers is specified by the argument size, which must be at least 624 and a multiple of four. The generation by this function is much faster than the following gen_rand function.
For initialization, init_gen_rand or init_by_array must be called before the first call of this function. This function can not be used after calling gen_rand function, without initialization.
| sfmt | SFMT internal state | 
| array | an array where pseudorandom 32-bit integers are filled by this function. The pointer to the array must be "aligned" (namely, must be a multiple of 16) in the SIMD version, since it refers to the address of a 128-bit integer. In the standard C version, the pointer is arbitrary. | 
| size | the number of 32-bit pseudorandom integers to be generated. size must be a multiple of 4, and greater than or equal to (MEXP / 128 + 1) * 4. | 
References gen_rand_array(), and SFMT_T::idx.
| void sfmt_fill_array64 | ( | sfmt_t * | sfmt, | 
| uint64_t * | array, | ||
| int | size | ||
| ) | 
This function generates pseudorandom 64-bit integers in the specified array[] by one call.
The number of pseudorandom integers is specified by the argument size, which must be at least 312 and a multiple of two. The generation by this function is much faster than the following gen_rand function.
| sfmt | SFMT internal state For initialization, init_gen_rand or init_by_array must be called before the first call of this function. This function can not be used after calling gen_rand function, without initialization. | 
| array | an array where pseudorandom 64-bit integers are filled by this function. The pointer to the array must be "aligned" (namely, must be a multiple of 16) in the SIMD version, since it refers to the address of a 128-bit integer. In the standard C version, the pointer is arbitrary. | 
| size | the number of 64-bit pseudorandom integers to be generated. size must be a multiple of 2, and greater than or equal to (MEXP / 128 + 1) * 2 | 
References gen_rand_array(), and SFMT_T::idx.
| void sfmt_gen_rand_all | ( | sfmt_t * | sfmt | ) | 
This function fills the internal state array with pseudorandom integers.
| sfmt | SFMT internal state | 
References SFMT_T::state.
Referenced by sfmt_genrand_uint32(), and sfmt_genrand_uint64().
| static double sfmt_genrand_real1 | ( | sfmt_t * | sfmt | ) |  [inline, static] | 
generates a random number on [0,1]-real-interval
| sfmt | SFMT internal state | 
References sfmt_genrand_uint32(), and sfmt_to_real1().
| static double sfmt_genrand_real2 | ( | sfmt_t * | sfmt | ) |  [inline, static] | 
generates a random number on [0,1)-real-interval
| sfmt | SFMT internal state | 
References sfmt_genrand_uint32(), and sfmt_to_real2().
| static double sfmt_genrand_real3 | ( | sfmt_t * | sfmt | ) |  [inline, static] | 
generates a random number on (0,1)-real-interval
| sfmt | SFMT internal state | 
References sfmt_genrand_uint32(), and sfmt_to_real3().
| static double sfmt_genrand_res53 | ( | sfmt_t * | sfmt | ) |  [inline, static] | 
generates a random number on [0,1) with 53-bit resolution
| sfmt | SFMT internal state | 
References sfmt_genrand_uint64(), and sfmt_to_res53().
| static double sfmt_genrand_res53_mix | ( | sfmt_t * | sfmt | ) |  [inline, static] | 
generates a random number on [0,1) with 53-bit resolution using two 32bit integers.
| sfmt | SFMT internal state | 
References sfmt_genrand_uint32(), and sfmt_to_res53_mix().
| static uint32_t sfmt_genrand_uint32 | ( | sfmt_t * | sfmt | ) |  [inline, static] | 
This function generates and returns 32-bit pseudorandom number.
init_gen_rand or init_by_array must be called before this function.
| sfmt | SFMT internal state | 
References SFMT_T::idx, sfmt_gen_rand_all(), SFMT_T::state, and W128_T::u.
Referenced by sfmt_genrand_real1(), sfmt_genrand_real2(), sfmt_genrand_real3(), and sfmt_genrand_res53_mix().
| static uint64_t sfmt_genrand_uint64 | ( | sfmt_t * | sfmt | ) |  [inline, static] | 
This function generates and returns 64-bit pseudorandom number.
init_gen_rand or init_by_array must be called before this function. The function gen_rand64 should not be called after gen_rand32, unless an initialization is again executed.
| sfmt | SFMT internal state | 
References SFMT_T::idx, sfmt_gen_rand_all(), SFMT_T::state, W128_T::u, and W128_T::u64.
Referenced by sfmt_genrand_res53().
| const char* sfmt_get_idstring | ( | sfmt_t * | sfmt | ) | 
This function returns the identification string.
The string shows the word size, the Mersenne exponent, and all parameters of this generator.
| sfmt | SFMT internal state | 
References UNUSED_VARIABLE.
| int sfmt_get_min_array_size32 | ( | sfmt_t * | sfmt | ) | 
This function returns the minimum size of array used for fill_array32() function.
| sfmt | SFMT internal state | 
References UNUSED_VARIABLE.
| int sfmt_get_min_array_size64 | ( | sfmt_t * | sfmt | ) | 
This function returns the minimum size of array used for fill_array64() function.
| sfmt | SFMT internal state | 
References UNUSED_VARIABLE.
| void sfmt_init_by_array | ( | sfmt_t * | sfmt, | 
| uint32_t * | init_key, | ||
| int | key_length | ||
| ) | 
This function initializes the internal state array, with an array of 32-bit integers used as the seeds.
| sfmt | SFMT internal state | 
| init_key | the array of 32-bit integers, used as a seed. | 
| key_length | the length of init_key. | 
References func1(), func2(), SFMT_T::idx, idxof(), period_certification(), SFMT_T::state, and W128_T::u.
| void sfmt_init_gen_rand | ( | sfmt_t * | sfmt, | 
| uint32_t | seed | ||
| ) | 
This function initializes the internal state array with a 32-bit integer seed.
| sfmt | SFMT internal state | 
| seed | a 32-bit integer used as the seed. | 
References SFMT_T::idx, idxof(), period_certification(), SFMT_T::state, and W128_T::u.
| static double sfmt_to_real1 | ( | uint32_t | v | ) |  [inline, static] | 
converts an unsigned 32-bit number to a double on [0,1]-real-interval.
| v | 32-bit unsigned integer | 
Referenced by sfmt_genrand_real1().
| static double sfmt_to_real2 | ( | uint32_t | v | ) |  [inline, static] | 
converts an unsigned 32-bit integer to a double on [0,1)-real-interval.
| v | 32-bit unsigned integer | 
Referenced by sfmt_genrand_real2().
| static double sfmt_to_real3 | ( | uint32_t | v | ) |  [inline, static] | 
converts an unsigned 32-bit integer to a double on (0,1)-real-interval.
| v | 32-bit unsigned integer | 
Referenced by sfmt_genrand_real3().
| static double sfmt_to_res53 | ( | uint64_t | v | ) |  [inline, static] | 
converts an unsigned 32-bit integer to double on [0,1) with 53-bit resolution.
| v | 32-bit unsigned integer | 
Referenced by sfmt_genrand_res53(), and sfmt_to_res53_mix().
| static double sfmt_to_res53_mix | ( | uint32_t | x, | 
| uint32_t | y | ||
| ) |  [inline, static] | 
generates a random number on [0,1) with 53-bit resolution from two 32 bit integers
References sfmt_to_res53().
Referenced by sfmt_genrand_res53_mix().
 1.8.0
 1.8.0