Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
shuffle_order_engine::operator()
shuffle_order_engine::shuffle_order_engine