independent_bits_engine Class
您可以重新封裝從其基底引擎所傳回值的位元產生數字隨機序列與位元的指定數目的。
template<class Engine,
size_t W, class UIntType>
class independent_bits_engine {
public:
typedef Engine base_type;
typedef typename base_type::result_type result_type;
independent_bits_engine();
explicit independent_bits_engine(const base_type& eng);
explicit independent_bits_engine(result_type x0);
explicit independent_bits_engine(seed_seq& seq);
void seed();
void seed(result_type x0);
void seed(seed_seq& seq);
const base_type& base() const;
static const result_type min();
static const result_type max();
result_type operator()();
void discard(unsigned long long count);
private:
Engine stored_eng;
int count;
};
參數
Engine
儲存的引擎型別。W
W 引擎的參數。UIntType
不帶正負號的整數結果型別。
備註
您可以重新封裝位元產生值由其基底引擎所傳回值的這個範本類別描述 <random> 。 每個項目的 W-位元值包含合併的 N 欄位:
第一 N0 欄位包含大於 Y0小於基底引擎所的低序位 W0 位元值,包裝以遞減意義。 太大的值就會被捨棄。
其餘 N - N0 欄位包含大於 Y1小於基底引擎所的低序位 W0 + 1 位元值,包裝以遞減意義。 太大的值就會被捨棄。
W(除了以外) 判斷參數如下所示:
R 是基本引擎所使用之完整的值 (stored_eng.max() - stored_eng.min() + 1,假設發生繞回問題未發生)。
M 為 floor(log2(R))。
N 一開始是 W / M + (W % M != 0)。
W0 為 W / N。
N0 為 N - W % N。
Y0 為 (R >> W0) << W0。
Y1 為 (R >> W0 + 1) << W0 + 1。
如果 Y0 / N < R - Y0N 會增加,而前四個參數重新判斷。
引擎的狀態為 stored_eng狀態。 樣板引數 W 的值小於零而且不大於必須大於位元數能在 result_type。
需求
標題: <random>
命名空間: std
請參閱
參考
independent_bits_engine::base_type
independent_bits_engine::discard
independent_bits_engine::independent_bits_engine