mkl::rng::device::mrg32k3a

The combined multiple recursive pseudorandom number generator MRG32k3a [ L'Ecuyer99a]

Syntax

template<std::int32_t VecSize = 1>

class mrg32k3a {

public:

static constexpr std::int32_t vec_size = VecSize;

mrg32k3a() : mrg32k3a(default_seed) {}

mrg32k3a(std::uint32_t seed, std::uint64_t offset = 0);

mrg32k3a(std::initializer_list<std::uint32_t> seed, std::uint64_t offset = 0);

mrg32k3a(std::uint32_t seed, std::initializer_list<std::uint64_t> offset);

mrg32k3a(std::initializer_list<std::uint32_t> seed, std::initializer_list<std::uint64_t> offset);

private:

static constexpr std::uint32_t default_seed = 1;

};

Include Files

Description

The combined multiple recursive pseudorandom number generator MRG32k3a [L'Ecuyer99a].

Template Parameters

Name

Type

Description

VecSize

std::int32_t

Describes the size of vector which will be produced by generate function by this engine. VecSize values may be 1, 2, 3, 4, 8, 16 as sycl::vec class size. By default VecSize = 1, for this case single random number is returned by the mkl::rng::device::generate function.

Constructors Input Parameters

Name

Type

Description

seed

std::uint32_t/ std::initializer_list<std::uint32_t>

Initial conditions of the engine state.

offset

std::uint64_t / std::initializer_list<std::uint64_t>

number of skipped elements, for initializer_list offset is calculated as: num_to_skip[0]+ num_to_skip[1]*264+ num_to_skip[2]* 2128+ … +num_to_skip[n-1]*264*(n-1).

See VS Notes for detailed descriptions.