最終更新日時(UTC): 2025年10月22日 16時15分43秒
Akira Takahashi が更新

履歴 編集

function template
<random>

# std::fisher_f_distribution::operator()(C++11)

    template <class URBG>
    result_type operator()(URBG& g);                         // (1)

    template <class URBG>
    result_type operator()(URBG& g, const param_type& parm); // (2)

## 概要

- (1) : コンストラクタで指定されたパラメータに基いて、乱数生成を行う
- (2) : コンストラクタで設定されたパラメータの代わりに、`param`を乱数生成のパラメータとして使用して乱数生成を行う

## 戻り値

指定されたパラメータに基いて、ランダムな値を生成して返す。

## 計算量

償却定数時間(`g()`の呼び出し回数)

## 例

    #include <iostream>
    #include <random>
    #include <cstdint>

    int main()
    {
      std::random_device seed_gen;
      std::uint32_t seed = seed_gen();
      std::default_random_engine engine(seed);

      // (1)
      {
        std::fisher_f_distribution<> dist(3.0, 4.0);

        for (int i = 0; i < 5; ++i) {
          double result = dist(engine);
          std::cout << result << std::endl;
        }
      }

      // (2) パラメータを渡すバージョン
      std::cout << std::endl;
      {
        using dist_type = std::fisher_f_distribution<>;
        dist_type dist;

        for (int i = 0; i < 5; ++i) {
          dist_type::param_type param(3.0, 4.0);
          double result = dist(engine, param);
          std::cout << result << std::endl;
        }
      }
    }

### 出力例

    0.681102
    2.81941
    1.01382
    1.57951
    2.43891

    2.78835
    0.743264
    0.221423
    2.64692
    0.804198

## バージョン

### 言語

- C++11

### 処理系

- Clang: ??
- GCC: 4.7.2 ✅
- ICC: ??
- Visual C++: ??

## 参照

- P0346R1 A `<random>` Nomenclature Tweak
  - URNGをURBGに変更