Loading...
Searching...
No Matches
tf::Xorshift< T > Class Template Reference

class to create a fast xorshift-based pseudo-random number generator More...

#include <taskflow/utility/math.hpp>

Public Member Functions

 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
 
operator() ()
 generates the next pseudo-random value
 

Detailed Description

template<typename T>
class tf::Xorshift< T >

class to create a fast xorshift-based pseudo-random number generator

Template Parameters
Tunsigned 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.

Attention
The internal state must be seeded with a non-zero value. This class is not thread-safe. Each thread should maintain its own instance.

Constructor & Destructor Documentation

◆ Xorshift() [1/2]

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.

◆ Xorshift() [2/2]

template<typename T >
tf::Xorshift< T >::Xorshift ( T value)
inline

constructs a xor-shift generator with the given seed

Parameters
valuethe new seed value to use

The seed value must be non-zero.

Member Function Documentation

◆ operator()()

template<typename T >
T tf::Xorshift< T >::operator() ( )
inline

generates the next pseudo-random value

Returns
a 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.

Warning
Calling this function before seeding the generator with a non-zero value results in undefined behavior.

◆ seed()

template<typename T >
void tf::Xorshift< T >::seed ( T value)
inline

seeds the generator with a new value

Parameters
valuethe new seed value

The seed value must be non-zero. A zero seed results in a degenerated generator that always returns zero.


The documentation for this class was generated from the following file: