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 年)。
|
minstd_rand |
升級的最低標準引擎 minstd_rand0 (Park、Miller 及 Stockmeyer,1993 年)。
|
如需線性同餘引擎演算法的詳細資訊,請參閱 Wikipedia 文章線性同餘方法。
需求
標頭:<random>
命名空間: std