Namespaces
Variants

std::philox_engine<UIntType,w,n,r,consts>:: philox_engine

From cppreference.net
philox_engine ( ) : philox_engine ( default_seed ) { }
(1) (C++26以降)
explicit philox_engine ( result_type value ) ;
(2) (C++26以降)
template < class SeedSeq >
explicit philox_engine ( SeedSeq & seq ) ;
(3) (C++26以降)
philox_engine ( const philox_engine & other ) ;
(4) (C++26以降)
(暗黙的に宣言)

擬似乱数生成エンジンを構築します。

1) デフォルトコンストラクタ。
  • デフォルト構築されたエンジンが型 std::philox4x32 の場合、その10000回連続呼び出しによって値 1955073260 が生成される。
  • デフォルト構築されたエンジンが型 std::philox4x64 の場合、その10000回連続呼び出しによって値 3409172418970261260 が生成される。
2) シード値 value でエンジンを構築する。エンジンの初期 状態 は以下のように決定される: [1]
  • シーケンス X の全要素はゼロに設定される。
  • シーケンス K の最初の要素は value mod 2 w
    に設定され、残りの要素はゼロに設定される。
  • j の値は n - 1 に設定される。
3) シードシーケンス seq でエンジンを構築する。エンジンの初期 state は以下のように決定される: [1]
  • シーケンス X の全要素はゼロに設定される。
  • ( w - 1 ) / 32 + 1 p として、シーケンス K の要素は以下の手順で設定される:
  1. 長さ n / 2 * p の仮想配列オブジェクト a を作成する。
  2. seq. generate ( a + 0 , a + n / 2 * p ) を呼び出す。
  3. 区間 [ 0 , n / 2 ) 内の各整数 k について、 K k (∑ p-1
    i=0
    a k·p+i ·2 32i
    ) mod 2 w
    に設定する。
  • j の値は n - 1 に設定される。
このオーバーロードは、 SeedSeq SeedSequence の要件を満たす場合にのみ、オーバーロード解決に参加します。
4) コピーコンストラクタ。構築時には、 * this == other true となります。


  1. 1.0 1.1 バッファ Y は意図的に設定されていません。 j n - 1 に設定されるため、次の状態遷移では常に新しい乱数値が生成され、 Y に格納されます。

目次

パラメータ

value - 内部状態の初期化に使用するシード値
seq - 内部状態の初期化に使用するシードシーケンス

計算量

1,2) 定数。
3) seq.generate 呼び出しの計算量と同じ。
4) 定数。

例外

3) SeedSeq std::seed_seq でない場合、 seq.generate 呼び出しによってスローされる例外をスローする。

関連項目

エンジンの現在の状態を設定する
(公開メンバ関数)
エンジンの現在のカウンタを設定する
(公開メンバ関数)