]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/random/test/test_old_uniform_int_distribution.cpp
1 /* test_old_uniform_int_distribution.cpp
3 * Copyright Steven Watanabe 2011
4 * Distributed under the Boost Software License, Version 1.0. (See
5 * accompanying file LICENSE_1_0.txt or copy at
6 * http://www.boost.org/LICENSE_1_0.txt)
12 #include <boost/random/uniform_int.hpp>
15 #define BOOST_RANDOM_DISTRIBUTION boost::uniform_int<>
16 #define BOOST_RANDOM_ARG1 a
17 #define BOOST_RANDOM_ARG2 b
18 #define BOOST_RANDOM_ARG1_DEFAULT 0
19 #define BOOST_RANDOM_ARG2_DEFAULT 9
20 #define BOOST_RANDOM_ARG1_VALUE 5
21 #define BOOST_RANDOM_ARG2_VALUE 250
23 #define BOOST_RANDOM_DIST0_MIN 0
24 #define BOOST_RANDOM_DIST0_MAX 9
25 #define BOOST_RANDOM_DIST1_MIN 5
26 #define BOOST_RANDOM_DIST1_MAX 9
27 #define BOOST_RANDOM_DIST2_MIN 5
28 #define BOOST_RANDOM_DIST2_MAX 250
30 #define BOOST_RANDOM_TEST1_PARAMS (0, 9)
31 #define BOOST_RANDOM_TEST1_MIN 0
32 #define BOOST_RANDOM_TEST1_MAX 9
34 #define BOOST_RANDOM_TEST2_PARAMS (10, 19)
35 #define BOOST_RANDOM_TEST2_MIN 10
36 #define BOOST_RANDOM_TEST2_MAX 19
38 #include "test_distribution.ipp"
40 #define BOOST_RANDOM_UNIFORM_INT boost::uniform_int
42 #include "test_uniform_int.ipp"
45 #include <boost/random/random_number_generator.hpp>
47 // Test that uniform_int<> can be used with std::random_shuffle
48 // Author: Jos Hickson
49 BOOST_AUTO_TEST_CASE(test_random_shuffle
)
51 typedef boost::uniform_int
<> distribution_type
;
52 typedef boost::variate_generator
<boost::mt19937
&, distribution_type
> generator_type
;
54 boost::mt19937
engine1(1234);
55 boost::mt19937
engine2(1234);
57 boost::random::random_number_generator
<boost::mt19937
> referenceRand(engine1
);
59 distribution_type
dist(0,10);
60 generator_type
testRand(engine2
, dist
);
62 std::vector
<int> referenceVec
;
64 for (int i
= 0; i
< 200; ++i
) {
65 referenceVec
.push_back(i
);
68 std::vector
<int> testVec(referenceVec
);
70 std::random_shuffle(referenceVec
.begin(), referenceVec
.end(), referenceRand
);
71 std::random_shuffle(testVec
.begin(), testVec
.end(), testRand
);
73 BOOST_CHECK_EQUAL_COLLECTIONS(
74 testVec
.begin(), testVec
.end(),
75 referenceVec
.begin(), referenceVec
.end());