1#ifndef _BBM_DRJIT_RANDOM_H_
2#define _BBM_DRJIT_RANDOM_H_
6#include "drjit/random.h"
8#include "backbone/type_traits.h"
42 if constexpr (std::integral<scalar_t<T>>)
_upper = std::numeric_limits<T>::max();
65 if constexpr (std::floating_point<scalar_t<T>>)
67 if constexpr (std::numeric_limits<scalar_t<T>>::digits > FLT_MANT_DIG)
return _rng.next_float64() * (
_upper -
_lower) +
_lower;
74 if constexpr (std::numeric_limits<scalar_t<T>>::digits > 32)
return _rng.next_uint64_bounded((
_upper -
_lower)) +
_lower;
Random number generator; built on top of Drjit.
Definition: backbone.h:53
uint64_t seed_t
seed type
Definition: random.h:22
static constexpr seed_t default_seed
Definition: random.h:27
Random generator wrapper around Drjit's PCG32.
Definition: random.h:34
rng(seed_t seed)
Definition: random.h:46
rng(void)
Constructors.
Definition: random.h:38
type _lower
Definition: random.h:82
T type
Definition: random.h:35
void seed(auto seed)
set the seed
Definition: random.h:56
rng(seed_t seed, type lower, type upper)
Definition: random.h:52
type _upper
Definition: random.h:82
rng(type lower, type upper)
Definition: random.h:51
type operator()(void)
\ brief get next number
Definition: random.h:62
drjit::PCG32< T > _rng
Definition: random.h:81