variate_generator Class

包装一个引擎和分发。

template<class Engine, class Dist>
    class variate_generator {
public:
    typedef Engine engine_type;
    typedef engine-value-type engine_value_type;
    typedef Dist distribution_type;
    typedef typename Dist::result_type result_type;
    variate_generator(engine_type eng0, distribution_type dist0);
    result_type operator()();
    template<class T>
        result_type operator()(T value);
    engine_value_type& engine();
    const engine_value_type& engine() const;
    distribution_type& distribution();
    const distribution_type& distribution() const;
    result_type min() const;
    result_type max() const;
private:
    Engine eng;             // exposition only
    Dist dist;              // exposition only
    };

参数

  • Engine
    任意引擎的类型。

  • Dist
    分发的类型。

备注

模板选件类描述存放一个引擎和分发并传递给 distribution 对象的 operator()的包装引擎对象生成值的对象。

模板参数 Engine 可以是类型 Eng、Eng*或 Eng&,Eng 是引擎。该类型 Eng 是基础引擎类型。类型 Eng 相应的对象是基础引擎对象。

模板中使用一个包装引擎与 distribution 对象所需的值的类型的 engine 对象生成的值的类型。包装引擎的 operator() 返回类型 Dist::input_type的值,生成如下所示:

如果返回 eng()的 Engine::result_type 和 Dist::input_type 是两个整数类型,被强制转换为类型 Dist::input_type。

如果返回 (eng() - eng.min()) / (eng.max() - eng.min())的 Engine::result_type 和 Dist::input_type 是两个浮点类型,被强制转换为类型 Dist::input_type。

如果 Engine::result_type 是整型,它返回 (eng() - eng.min()) / (eng.max() - eng.min() + 1)的 Dist::input_type 是浮点类型,被强制转换为类型 Dist::input_type。

如果 Engine::result_type 是浮点类型,它返回 ((eng() - eng.min()) / (eng.max() - eng.min()) * std::numeric_limits<Dist::input_type>::max()的 Dist::input_type 是integral类型,被强制转换为类型 Dist::input_type。

要求

标头: <random>

命名空间: std

请参见

参考

<random>

variate_generator::distribution

variate_generator::distribution_type

variate_generator::engine

variate_generator::engine_type

variate_generator::engine_value_type

variate_generator::operator()

variate_generator::variate_generator