docs/classtf_1_1Xorshift.html
| | Taskflow: A General-purpose Task-parallel Programming System |
Loading...
Searching...
No Matches
Public Member Functions | List of all members
tf::Xorshift< T > Class Template Reference
class to create a fast xorshift-based pseudo-random number generator More...
#include <taskflow/utility/math.hpp>
|
|
| | Xorshift ()=default |
| | constructs an uninitialized xor-shift generator
|
| |
| | Xorshift (T value) |
| | constructs a xor-shift generator with the given seed
|
| |
| void | seed (T value) |
| | seeds the generator with a new value
|
| |
| T | operator() () |
| | generates the next pseudo-random value
|
| |
template<typename T>
class tf::Xorshift< T >
class to create a fast xorshift-based pseudo-random number generator
Template Parameters
| T | unsigned integral type used as the internal state (supported uint32_t and uint64_t) |
This class implements a lightweight xorshift pseudo-random number generator suitable for performance-critical paths such as schedulers, work-stealing victim selection, and randomized backoff. The implementation is branchless on the hot path and has a very small state footprint (one machine word). All operations are integer-only.
NoteThe internal state must be seeded with a non-zero value. This class is not thread-safe. Each thread should maintain its own instance.
template<typename T>
|
| tf::Xorshift< T >::Xorshift | ( | | ) | |
| default |
constructs an uninitialized xor-shift generator
The internal state is not initialized. The user must call seed() with a non-zero value before generating numbers.
rng.seed(12345);
class to create a fast xorshift-based pseudo-random number generator
Definition math.hpp:412
void seed(T value)
seeds the generator with a new value
Definition math.hpp:457
template<typename T>
|
| tf::Xorshift< T >::Xorshift | ( | T | value | ) | |
| inline |
constructs a xor-shift generator with the given seed
Parameters
| value | the new seed value to use |
The seed value must be non-zero.
tf::Xorshift<uint64_t> rng(12345);
auto r = rng();
template<typename T>
|
| T tf::Xorshift< T >::operator() | ( | | ) | |
| inline |
generates the next pseudo-random value
Returnsa pseudo-random value of type T
For 32-bit state, this function implements the Xorshift32 algorithm. For 64-bit state, this function implements the Xorshift64 algorithm with a multiplicative output transformation to improve distribution.
tf::Xorshift<uint64_t> rng(12345);
uint64_t r1 = rng();
uint64_t r2 = rng();
WarningCalling this function before seeding the generator with a non-zero value results in undefined behavior.
template<typename T>
|
| void tf::Xorshift< T >::seed | ( | T | value | ) | |
| inline |
seeds the generator with a new value
Parameters
| value | the new seed value |
The seed value must be non-zero. A zero seed results in a degenerated generator that always returns zero.
rng.seed(12345);
The documentation for this class was generated from the following file:
taskflow/utility/math.hpp
Maintained by Dr. Tsung-Wei Huang — Generated by 1.13.1