ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
detray::detail::random_numbers< scalar_t, distribution_t, engine_t > Struct Template Reference

Wrapper for CPU random number generatrion for the random_track_generator. More...

#include <detray/test/common/event_generator/random_numbers.hpp>

Public Types

using distribution_type = distribution_t
 Random distribution type.
using engine_type = engine_t
 Random engine type.
using seed_type = typename engine_t::result_type
 Random seed type.

Public Member Functions

 random_numbers ()
 Default seed.
 random_numbers (const std::vector< seed_type > &s)
 More entropy in seeds from collection s.
 random_numbers (random_numbers &&other) noexcept
 Move constructor.
 random_numbers (seed_type s)
 Different seed s for every instance.
std::uint8_t coin_toss ()
 50:50 coin toss
auto normal (const scalar_t mean, const scalar_t stddev)
 Explicit normal distribution around a mean and stddev.
auto operator() (const darray< scalar_t, 2 > range={ -std::numeric_limits< scalar_t >::max(), std::numeric_limits< scalar_t >::max()})
 Generate random numbers in a given range.

Static Public Member Functions

static constexpr seed_type default_seed ()
 Get the default seed of the engine.

Public Attributes

engine_t m_engine
 Random engine.
std::seed_seq m_seeds
 Seed sequence.

Detailed Description

template<concepts::scalar scalar_t, typename distribution_t = std::uniform_real_distribution<scalar_t>, typename engine_t = std::mt19937_64>
struct detray::detail::random_numbers< scalar_t, distribution_t, engine_t >

Wrapper for CPU random number generatrion for the random_track_generator.

Constructor & Destructor Documentation

◆ random_numbers() [1/3]

template<concepts::scalar scalar_t, typename distribution_t = std::uniform_real_distribution<scalar_t>, typename engine_t = std::mt19937_64>
detray::detail::random_numbers< scalar_t, distribution_t, engine_t >::random_numbers ( seed_type s)
explicit

Different seed s for every instance.

Parameters
srandom engine seed

◆ random_numbers() [2/3]

template<concepts::scalar scalar_t, typename distribution_t = std::uniform_real_distribution<scalar_t>, typename engine_t = std::mt19937_64>
detray::detail::random_numbers< scalar_t, distribution_t, engine_t >::random_numbers ( const std::vector< seed_type > & s)
explicit

More entropy in seeds from collection s.

Parameters
srandom engine seeds

◆ random_numbers() [3/3]

template<concepts::scalar scalar_t, typename distribution_t = std::uniform_real_distribution<scalar_t>, typename engine_t = std::mt19937_64>
detray::detail::random_numbers< scalar_t, distribution_t, engine_t >::random_numbers ( random_numbers< scalar_t, distribution_t, engine_t > && other)
noexcept

Move constructor.

Parameters
otherrandom number generator to move

Member Function Documentation

◆ coin_toss()

template<concepts::scalar scalar_t, typename distribution_t = std::uniform_real_distribution<scalar_t>, typename engine_t = std::mt19937_64>
std::uint8_t detray::detail::random_numbers< scalar_t, distribution_t, engine_t >::coin_toss ( )

50:50 coin toss

Returns
zero or one

◆ default_seed()

template<concepts::scalar scalar_t, typename distribution_t = std::uniform_real_distribution<scalar_t>, typename engine_t = std::mt19937_64>
constexpr seed_type detray::detail::random_numbers< scalar_t, distribution_t, engine_t >::default_seed ( )
staticconstexpr

Get the default seed of the engine.

Returns
the default seed

◆ normal()

template<concepts::scalar scalar_t, typename distribution_t = std::uniform_real_distribution<scalar_t>, typename engine_t = std::mt19937_64>
auto detray::detail::random_numbers< scalar_t, distribution_t, engine_t >::normal ( const scalar_t mean,
const scalar_t stddev )

Explicit normal distribution around a mean and stddev.

Parameters
meandistribution mean
stddevdistribution standard deviation
Returns
the generated random value

◆ operator()()

template<concepts::scalar scalar_t, typename distribution_t = std::uniform_real_distribution<scalar_t>, typename engine_t = std::mt19937_64>
auto detray::detail::random_numbers< scalar_t, distribution_t, engine_t >::operator() ( const darray< scalar_t, 2 > range = { -std::numeric_limits<scalar_t>::max(), std::numeric_limits<scalar_t>::max()})

Generate random numbers in a given range.

Parameters
rangelower and upper distribution bounds
Returns
the generated random value