Vulcan
Aerospace Engineering Utilities Built on Janus
Loading...
Searching...
No Matches
vulcan::rng::RNG Class Reference

Vulcan Random Number Generator. More...

#include <RNG.hpp>

Public Types

using Engine = std::mt19937_64
using result_type = Engine::result_type

Public Member Functions

 RNG (uint64_t seed)
 Construct with explicit seed.
 RNG (std::seed_seq &seq)
 Construct with seed sequence.
 RNG (const RNG &)=delete
RNGoperator= (const RNG &)=delete
 RNG (RNG &&)=default
RNGoperator= (RNG &&)=default
result_type operator() ()
 Get raw random bits.
double gaussian ()
 Generate standard normal N(0,1).
double gaussian (double mean, double stddev)
 Generate normal N(mean, stddev).
double uniform ()
 Generate uniform [0, 1).
double uniform (double min, double max)
 Generate uniform [min, max).
int64_t uniform_int (int64_t min, int64_t max)
 Generate uniform integer [min, max].
Eigen::Vector3d gaussian3 ()
 Fill 3-vector with independent N(0,1).
template<int N>
Eigen::Vector< double, N > gaussianN ()
 Fill N-vector with independent N(0,1).
Engineengine ()
 Access underlying engine (for advanced use).
const Engineengine () const
uint64_t seed () const
 Get original seed (for logging/reproducibility).
void discard (uint64_t n)
 Discard n values (for stream splitting).
void reset ()
 Reset to initial state with same seed.
void reseed (uint64_t new_seed)
 Reseed with new value.

Detailed Description

Vulcan Random Number Generator.

Provides a convenient wrapper around std::mt19937_64 with methods for common distributions used in sensor simulation and Monte Carlo analysis.

Design principles:

  • Explicit seeding required (no auto-seeding for reproducibility)
  • Same seed produces identical sequence across all platforms
  • Stores seed for logging/debugging

Example:

vulcan::rng::RNG rng(42); // Seeded for reproducibility
double x = rng.gaussian(); // N(0,1)
double y = rng.uniform(0, 10); // U[0, 10)
auto v = rng.gaussian3(); // 3-vector of N(0,1)
Vulcan Random Number Generator.
Definition RNG.hpp:37
Definition Distributions.hpp:14

Member Typedef Documentation

◆ Engine

using vulcan::rng::RNG::Engine = std::mt19937_64

◆ result_type

using vulcan::rng::RNG::result_type = Engine::result_type

Constructor & Destructor Documentation

◆ RNG() [1/4]

vulcan::rng::RNG::RNG ( uint64_t seed)
inlineexplicit

Construct with explicit seed.

Parameters
seedSeed value (logged for reproducibility)

◆ RNG() [2/4]

vulcan::rng::RNG::RNG ( std::seed_seq & seq)
inlineexplicit

Construct with seed sequence.

Provides better initialization of MT19937's large state.

Parameters
seqSeed sequence

◆ RNG() [3/4]

vulcan::rng::RNG::RNG ( const RNG & )
delete

◆ RNG() [4/4]

vulcan::rng::RNG::RNG ( RNG && )
default

Member Function Documentation

◆ discard()

void vulcan::rng::RNG::discard ( uint64_t n)
inline

Discard n values (for stream splitting).

Parameters
nNumber of values to skip

◆ engine() [1/2]

Engine & vulcan::rng::RNG::engine ( )
inline

Access underlying engine (for advanced use).

Returns
Reference to MT19937_64 engine

◆ engine() [2/2]

const Engine & vulcan::rng::RNG::engine ( ) const
inline

◆ gaussian() [1/2]

double vulcan::rng::RNG::gaussian ( )
inline

Generate standard normal N(0,1).

Returns
Random sample from N(0,1)

◆ gaussian() [2/2]

double vulcan::rng::RNG::gaussian ( double mean,
double stddev )
inline

Generate normal N(mean, stddev).

Parameters
meanDistribution mean
stddevDistribution standard deviation
Returns
Random sample from N(mean, stddev²)

◆ gaussian3()

Eigen::Vector3d vulcan::rng::RNG::gaussian3 ( )
inline

Fill 3-vector with independent N(0,1).

Returns
3D vector of independent standard normal samples

◆ gaussianN()

template<int N>
Eigen::Vector< double, N > vulcan::rng::RNG::gaussianN ( )
inline

Fill N-vector with independent N(0,1).

Template Parameters
NVector dimension
Returns
N-dimensional vector of independent standard normal samples

◆ operator()()

result_type vulcan::rng::RNG::operator() ( )
inline

Get raw random bits.

Returns
Random 64-bit value

◆ operator=() [1/2]

RNG & vulcan::rng::RNG::operator= ( const RNG & )
delete

◆ operator=() [2/2]

RNG & vulcan::rng::RNG::operator= ( RNG && )
default

◆ reseed()

void vulcan::rng::RNG::reseed ( uint64_t new_seed)
inline

Reseed with new value.

Parameters
new_seedNew seed value

◆ reset()

void vulcan::rng::RNG::reset ( )
inline

Reset to initial state with same seed.

Resets both the engine and distribution caches for full reproducibility.

◆ seed()

uint64_t vulcan::rng::RNG::seed ( ) const
inline

Get original seed (for logging/reproducibility).

Returns
Seed used to initialize this RNG
Note
Returns 0 if constructed with seed_seq

◆ uniform() [1/2]

double vulcan::rng::RNG::uniform ( )
inline

Generate uniform [0, 1).

Returns
Random sample from U[0, 1)

◆ uniform() [2/2]

double vulcan::rng::RNG::uniform ( double min,
double max )
inline

Generate uniform [min, max).

Parameters
minMinimum value (inclusive)
maxMaximum value (exclusive)
Returns
Random sample from U[min, max)

◆ uniform_int()

int64_t vulcan::rng::RNG::uniform_int ( int64_t min,
int64_t max )
inline

Generate uniform integer [min, max].

Parameters
minMinimum value (inclusive)
maxMaximum value (inclusive)
Returns
Random integer from [min, max]

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