1 //===----------------------------------------------------------------------===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
11 // template<class RandomAccessIterator, class UniformRandomNumberGenerator>
12 // void shuffle(RandomAccessIterator first, RandomAccessIterator last,
13 // UniformRandomNumberGenerator& g);
20 #include "test_macros.h"
24 int ia
[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
25 int ia1
[] = {2, 7, 1, 4, 3, 6, 5, 10, 9, 8};
26 int ia2
[] = {1, 8, 3, 4, 6, 9, 5, 7, 2, 10};
27 const unsigned sa
= sizeof(ia
)/sizeof(ia
[0]);
29 std::shuffle(ia
, ia
+sa
, g
);
30 LIBCPP_ASSERT(std::equal(ia
, ia
+sa
, ia1
));
31 assert(std::is_permutation(ia
, ia
+sa
, ia1
));
32 std::shuffle(ia
, ia
+sa
, std::move(g
));
33 LIBCPP_ASSERT(std::equal(ia
, ia
+sa
, ia2
));
34 assert(std::is_permutation(ia
, ia
+sa
, ia2
));