1#ifndef NEFORCE_CORE_ALGORITHM_SHUFFLE_HPP__
2#define NEFORCE_CORE_ALGORITHM_SHUFFLE_HPP__
12NEFORCE_BEGIN_NAMESPACE__
39template <
typename Iterator>
40void shuffle(Iterator first, Iterator last) {
47 for (Iterator i = _NEFORCE
next(first); i != last; ++i) {
72template <
typename Iterator,
typename Generator>
73void shuffle(Iterator first, Iterator last, Generator& rand) {
79 for (Iterator i = _NEFORCE
next(first); i != last; ++i) {
80 Iterator j = _NEFORCE
next(first, rand(i - first + 1));
89NEFORCE_END_NAMESPACE__
T next_int(T max) noexcept
生成 [0, max) 范围内的随机整数
NEFORCE_INLINE17 constexpr bool is_ranges_rnd_iter_v
检查是否为范围随机访问迭代器
constexpr Iterator next(Iterator iter, iter_difference_t< Iterator > n=1)
获取迭代器的后一个位置
constexpr iter_difference_t< Iterator > distance(Iterator first, Iterator last)
计算两个迭代器之间的距离
constexpr void iter_swap(Iterator1 a, Iterator2 b) noexcept(noexcept(_NEFORCE swap(*a, *b)))
交换迭代器指向的元素
void shuffle(Iterator first, Iterator last)
随机重排序列