hypergeometric#

超幾何分布のランダム値を生成します。

説明#

超幾何クラス・オブジェクトは、ロットサイズ l、サンプリング・サイズ s、ロット内のマークされた要素の数 m で超幾何分布の乱数を提供するため、generate 関数で使用されます。ここで \(l, m, s \in N \cup \left \{ 0 \right \}; l \geq max(s, m)\) です。

m 個の「マークされた」要素と l-m 個の「マークされていない」要素で構成される l 個の要素について考えます。このロットから正確に s 個の要素を置き換えずに試行的にサンプリングすると、s 個の要素のグループに正確に k 個のマークされた要素が含まれる確率である超幾何分布を定義するのに役立ちます。

確率分布は次のように表されます。

\[P(X = k) = \frac{C_m^k C_{l-m}^{s-k}}{C_l^s}\]

, k∈ {max(0, s + m - l), …, min(s, m)}

累積分布関数は次のようになります。

\[\begin{split}F_{l, s, m}(x) = \begin{cases} 0, & x < max (0, s + m - l)\\ \sum_{k = \max (0, s+m-l)}^{\lfloor x \rfloor} \frac{C_m^k C_{l-m}^{s-k}}{C_l^s}, & max (0, s + m - l) \leq x \leq \min (s, m)\\ 1, & x > \min(s, m) \end{cases}\end{split}\]

製品および性能に関する情報

性能は、使用状況、構成、およびその他の要因によって異なります。詳細は、https://www.intel.com/PerformanceIndex (英語) を参照してください。改訂 #20201201

API#

構文#

namespace oneapi::mkl::rng { 
  template<typename IntType = std::int32_t, 
           typename Method = hypergeometric_method::by_default> 
  class hypergeometric { 
  public: 
    using method_type = Method; 
    using result_type = IntType; 

    hypergeometric(): hypergeometric(1, 1, 1){} 
    explicit hypergeometric(std::int32_t l, std::int32_T s, std::int32_T m); 
    explicit hypergeometric(const param_type& pt); 

    std::int32_t s() const; 
    std::int32_t m() const; 
    std::int32_t l() const; 
    param_type param() const; 
    void param(const param_type& pt); 
  }; 
}

サポートされるデバイス: CPU および GPU

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

  • oneapi/mkl/rng.hpp

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

typename IntType = std::int32_t

生成された値のタイプ。固有の値は次のとおりです:

std::int32_t

std::uint32_t

typename Method = oneapi::mkl::rng:: hypergeometric_method:: by_default

生成メソッド。固有の値は次のとおりです:

oneapi::mkl::rng::hypergeometric_method::h2pe

配布テンプレート・パラメーター・メソッドのメソッドの説明を参照してください。

入力パラメーター#

名前

タイプ

説明

l

std::int32_t

l のロットサイズ。

s

std::int32_t

非置換サンプリングのサイズ。

m

std::int32_t

マークされた要素の数 m