subtract_with_carry_engine 類別
使用帶進位減法 (延隔 Fibonacci) 演算法,以產生隨機序列。
template<class UIntType, size_t W, size_t S, size_t R> class subtract_with_carry_engine;
參數
UIntType
不帶正負號的整數結果類型。 如需可能的類型,請參閱 <random>。W
字組大小。 狀態序列的每個字組大小 (位元)。 前置條件:0 < W ≤ numeric_limits<UIntType>::digitsS
短延隔。 整數值數目。 前置條件:0 < S < RR
長延隔。 決定所產生數列中的週期。
Members
subtract_with_carry_engine::subtract_with_carry_engine |
subtract_with_carry_engine::min |
subtract_with_carry_engine::discard |
subtract_with_carry_engine::operator() |
subtract_with_carry_engine::max |
subtract_with_carry_engine::seed |
default_seed 是一個成員常數,定義為 19780503u,用做 subtract_with_carry_engine::seed 的預設參數值以及單一值建構函式。 |
如需引擎成員的詳細資訊,請參閱 <random>。
備註
substract_with_carry_engine 範本類別是針對 linear_congruential_engine 的改良。 但這些引擎都不像 mersenne_twister_engine 一樣快,且具有高品質的結果。
此引擎使用週期關聯 (period) x(i) = (x(i - R) - x(i - S) - cy(i - 1)) mod M 來產生使用者指定之不帶正負號整數類型的值,其中,如果 x(i - S) - x(i - R) - cy(i - 1) < 0,則 cy(i) 的值為 1,否則為 0,而 M 的值為 2W。 引擎的狀態是一個進位指標加上 R 值。 這些值包含已至少呼叫 operator() R 次時所傳回的最後一個 R 值,否則為已傳回的 N 值,以及種子的最後一個 R - N 值。
範本引數 UIntType 必須夠大,才能保留最多 M - 1 個值。
雖然您可以直接從此引擎建構產生器,但您也可以使用下表中其中一個預先定義的 typedefs。
名稱 |
描述 |
---|---|
ranlux24_base |
用做 ranlux24 的基底。
|
ranlux48_base |
用做 ranlux48 的基底。
|
如需帶進位減法引擎演算法的詳細資訊,請參閱 Wikipedia 文章:延隔 Fibonacci 產生器 (英文)。
需求
標頭:<random>
命名空間: std