最終更新日時(UTC):
が更新

履歴 編集

type-alias
<random>

std::philox4x32(C++26)

namespace std {
  using philox4x32 = philox_engine<uint_fast32_t, 32, 4, 10, 0xD2511F53, 0x9E3779B9, 0xCD9E8D57, 0xBB67AE85>;
}

概要

パラメータ設定済みのphilox_engine
32ビット版のPhilox。64ビット版はphilox4x64

要件

philox4x32型オブジェクトをデフォルト構築した場合、10000番目に生成される擬似乱数の値は1955073260であること。

乱数列の周期

4 * 24 * 32 = 2130

サイズ

32ビット * 10個

シード、および生成される値の型

uint_fast32_t

備考

  • ここではラウンド数としてr = 10を設定している。この値を大きくすれば乱数の品質は向上し、統計的により良い分布になっていく。10という値は既知の統計検定に合格する最小値よりやや大きめであり、広く使用されている値である。言い換えれば、適度な性能コストで統計的な安全マージンを提供している
    • r = 7でも統計的な欠陥は見つかっていないが、実際にはr = 10だけが広く使われている

#include <iostream>
#include <random>

int main()
{
  std::random_device seed_gen;
  std::philox4x32 engine{seed_gen()};

  for (int i = 0; i < 10; ++i) {
    std::uint32_t result = engine();
    std::cout << result << std::endl;
  }
}

出力例

717409690
3816001420
2063273750
279442752
2836561695
431684143
3973522490
2090827657
748889484
859307553

バージョン

言語

  • C++26

処理系