std::experimental::shuffle
From cppreference.com
                    
                                        
                    < cpp | experimental
                    
                                                            
                    |   Defined in header  <experimental/algorithm>
  | 
||
|   template< class RandomIt> void shuffle( RandomIt first, RandomIt last);  | 
(library fundamentals TS v2) | |
Reorders the elements in the given range [first, last) such that each possible permutation of those elements has equal probability of appearance, using the per-thread random number engine as the random number generator.
Parameters
| first, last | - | the range of elements to shuffle randomly | 
 -RandomIt must meet the requirements of ValueSwappable and LegacyRandomAccessIterator.
 | ||
Return value
(none)
Complexity
Linear in the distance between first and last.
Example
| This section is incomplete Reason: no example  | 
See also
|    (until C++17)(C++11)  | 
   randomly re-orders elements in a range   (function template)  |