Back to Taskflow

Taskflow: A General

docs/classtf_1_1Xorshift.html

4.1.04.4 KB
Original Source

| | 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>

|

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
| | | | T | 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

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

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.

tf::Xorshift<uint64_t> rng;

rng.seed(12345);

tf::Xorshift

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

Definition math.hpp:412

tf::Xorshift::seed

void seed(T value)

seeds the generator with a new value

Definition math.hpp:457

Xorshift() [2/2]

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();

Member Function Documentation

operator()()

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.

seed()

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.

tf::Xorshift<uint64_t> rng;

rng.seed(12345);


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