Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Generates a random sequence by reordering the values returned from its base engine.
template<class Engine,
size_t K>
class shuffle_order_engine {
public:
typedef Engine base_type;
typedef typename base_type::result_type result_type;
static constexpr size_t table_size = K;
shuffle_order_engine();
explicit shuffle_order_engine(const base_type& eng);
explicit shuffle_order_engine(result_type x0);
explicit shuffle_order_engine(seed_seq& seq);
void seed();
void seed(result_type x0);
void seed(seed_seq& seq);
const base_type& base() const;
static constexpr result_type min();
static constexpr result_type max();
result_type operator()();
void discard(unsigned long long count);
private:
Engine stored_eng;
result_type stored_arr[K];
result_type stored_y;
};
Parameters
Engine
The stored engine type.K
The K engine parameter.
Remarks
This template class describes a compound engine that produces values by reordering the values returned by its base engine. Each constructor fills the array stored_arr with K values returned by the base engine. It then stores in stored_y an additional value returned by the base engine. Each element of the generated sequence is then obtained from stored_y, after which:
The array index J is computed as K * (stored_y - min()) / (max() - min() + 1).
stored_y is replaced by stored_arr[J].
stored_arr[j] is replaced by stored_eng().
The engine's state is the state of stored_eng, followed by the K elements of stored_arr, followed by stored_y.
The value of the template argument K must be greater than zero.
Requirements
Header: <random>
Namespace: std
See Also
Reference
shuffle_order_engine::base_type