通过重新打包从其基引擎返回的值的位数字生成一个随机顺序的位指定数目的。
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