mrg32k3a#

Description#

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

API#

Syntax#

namespace oneapi::mkl::rng::device {
  template<std::int32_t VecSize = 1>
  class mrg32k3a {
  public:
    static constexpr std::uint32_t default_seed = 1;
    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);
  };
}

Include Files#

  • oneapi/mkl/rng/device.hpp

Template Parameters#

Name

Type

Description

VecSize

std::int32_t

Describes the size of the vector that will be produced by the generate function with this engine. VecSize values can be 1, 2, 3, 4, 8, or 16 as the sycl:vec class size. By default, VecSize = 1; for this case, the generate function returns a single random number.

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 the detailed descriptions.