Defined in header <random>  

template< class Engine, std::size_t K > class shuffle_order_engine;  (since C++11) 
shuffle_order_engine
is a random number engine adaptor that shuffles the random numbers generated by the base engine. It maintains a table of size K
and delivers a randomly selected number from that table when requested, replacing it with a number generated by the base engine.
The following typedef defines the random number engine with one commonly used parameter set:
Defined in header <random> 


Type  Definition 
knuth_b (C++11)  std::shuffle_order_engine<std::minstd_rand0, 256> 
Engine    the type of the wrapped engine 
K    the size of the internal table. Must be greater than 0 
Type requirements  
Engine must meet the requirements of RandomNumberEngine. 
Member type  Definition 

result_type  Engine::result_type 
(C++11)  constructs the engine adaptor (public member function) 
(C++11)  sets the state of the underlying engine (public member function) 
(C++11)  returns the underlying engine (public member function) 
Generation 

(C++11)  advances the state of the underlying engine and returns the generated value (public member function) 
(C++11)  advances the adaptor's state by a specified amount (public member function) 
Characteristics 

[static] (C++11)  gets the smallest possible value in the output range of the underlying engine. (public static member function) 
[static] (C++11)  gets the largest possible value in the output range of the underlying engine. (public static member function) 
(C++11)(C++11)(removed in C++20)  compares the internal states of the adaptors and underlying engines (function) 
(C++11)  performs stream input and output on pseudorandom number engine adaptor (function) 
constexpr size_t table_size
[static]  the size of the internal table, K (public static member constant) 
© cppreference.com
Licensed under the Creative Commons AttributionShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/random/shuffle_order_engine