共用方式為


linear_congruential_engine 類別

依線性同餘演算法產生隨機序列。

template<class UIntType, UIntType A, UIntType C, UIntType M> class linear_congruential_engine;

參數

  • UIntType
    不帶正負號的整數結果類型。 關於可能的類型,請參閱 <random>

  • A
    乘數。 前置條件:請參閱<備註>一節。

  • C
    遞增。 前置條件:請參閱<備註>一節。

  • M
    模數。 前置條件:請參閱備註。

Members

linear_congruential_engine::linear_congruential_engine

linear_congruential_engine::min

linear_congruential_engine::discard

linear_congruential_engine::operator()

linear_congruential_engine::max

linear_congruential_engine::seed

default_seed 是成員常數,定義為 1u,用作為 linear_congruential_engine::seed 及單一值建構函式的預設參數值。

如需引擎成員的詳細資訊,請參閱 <random>

備註

linear_congruential_engine 範本類別是最簡單的產生器引擎,但不具有最快或最高的品質。 和此引擎相較之下較為改進的是 substract_with_carry_engine。 但這些引擎都不像 mersenne_twister_engine 一樣快,且具有高品質的結果。

此引擎使用週期關聯 (「週期」(Period)) x(i) = (A * x(i-1) + C) mod M,產生使用者指定之不帶正負號的整數類型的值。

若 M 為零,則此模數作業所使用的值為 numeric_limits<result_type>::max() + 1。 引擎的狀態會是上次傳回的值;若沒有對 operator() 執行任何呼叫,則引擎的狀態是初始值。

若 M 不是零,則範本引數 A 和 C 的值必須小於 M。

雖然您可以直接從此引擎建構產生器,但您也可以使用下表中其中一個預先定義的 typedefs。

名稱

描述

minstd_rand0

1988 最低標準引擎 (Lewis、Goodman 及 Miller,1969 年)。

typedef linear_congruential_engine<unsigned int, 16807, 0, 2147483647> minstd_rand0;

minstd_rand

升級的最低標準引擎 minstd_rand0 (Park、Miller 及 Stockmeyer,1993 年)。

typedef linear_congruential_engine<unsigned int, 48271, 0, 2147483647> minstd_rand;

如需線性同餘引擎演算法的詳細資訊,請參閱 Wikipedia 文章線性同餘方法

需求

標頭:<random>

命名空間: std

請參閱

參考

<random>