mrg32k3a#

説明#

複合多重再帰擬似乱数生成器 MRG32k3a [L’Ecuyer99a]。

API#

構文#

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); 
  }; 
}

インクルード・ファイル#

  • oneapi/mkl/rng/device.hpp

テンプレート・パラメーター#

名前

タイプ

説明

VecSize

std::int32_t

このエンジンの生成関数によって生成されるベクトルのサイズを指定します。VecSize 値は、sycl::vec クラスサイズとして 1、2、3、4、8、16 になります。デフォルトでは VecSize = 1 です。この場合、generate 関数によって 1 つの乱数が返されます。

コンストラクターの入力パラメーター#

名前

タイプ

説明

seed

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

エンジン状態の初期条件。

offset

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

スキップされた要素の数は、initializer_list オフセットの場合、次のように計算されます: num_to_skip [0]+ num_to_skip [1]*264 + num_to_skip [2]* 2128 + … + num_to_skip [n-1]*264 *(n-1)。

この詳細については VS ノートを参照してください。