24 #ifndef TVM_SUPPORT_RANDOM_ENGINE_H_
25 #define TVM_SUPPORT_RANDOM_ENGINE_H_
26 #include <tvm/runtime/logging.h>
78 return *rand_state_ptr_;
86 if (rand_state == -1) {
91 if (rand_state == 0) {
95 LOG(FATAL) <<
"ValueError: Random seed must be non-negative";
104 ICHECK(rand_state_ptr_ !=
nullptr);
115 return ((*
this)() * 32767) % 1999999973;
126 rand_state_ptr_ = rand_state_ptr;
This linear congruential engine is a drop-in replacement for std::minstd_rand. It strictly correspond...
Definition: random_engine.h:44
TRandState ForkSeed()
Fork a new seed for another RNG from current random state.
Definition: random_engine.h:112
static constexpr TRandState multiplier
The multiplier.
Definition: random_engine.h:50
static constexpr TRandState modulus
The modulus.
Definition: random_engine.h:54
uint64_t result_type
The result type.
Definition: random_engine.h:48
static constexpr result_type max()
The maximum possible value of random state here.
Definition: random_engine.h:58
result_type operator()()
Operator to move the random state to the next and return the new random state. According to definitio...
Definition: random_engine.h:76
void Seed(TRandState rand_state)
Change the start random state of RNG with the seed of a new random state value.
Definition: random_engine.h:103
int64_t TRandState
Definition: random_engine.h:46
static TRandState NormalizeSeed(TRandState rand_state)
Normalize the random seed to the range of [1, modulus - 1].
Definition: random_engine.h:85
static TRandState DeviceRandom()
Get a device random state.
Definition: random_engine.h:64
static constexpr TRandState increment
The increment.
Definition: random_engine.h:52
static constexpr result_type min()
The minimum possible value of random state here.
Definition: random_engine.h:56
LinearCongruentialEngine(TRandState *rand_state_ptr)
Construct a random number generator with a random state pointer.
Definition: random_engine.h:125
runtime implementation for LibTorch/TorchScript.
Definition: analyzer.h:36