• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* test_old_uniform_int_distribution.cpp
2  *
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)
7  *
8  * $Id$
9  *
10  */
11 
12 #include <boost/random/uniform_int.hpp>
13 #include <limits>
14 
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
22 
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
29 
30 #define BOOST_RANDOM_TEST1_PARAMS (0, 9)
31 #define BOOST_RANDOM_TEST1_MIN 0
32 #define BOOST_RANDOM_TEST1_MAX 9
33 
34 #define BOOST_RANDOM_TEST2_PARAMS (10, 19)
35 #define BOOST_RANDOM_TEST2_MIN 10
36 #define BOOST_RANDOM_TEST2_MAX 19
37 
38 #include "test_distribution.ipp"
39 
40 #define BOOST_RANDOM_UNIFORM_INT boost::uniform_int
41 
42 #include "test_uniform_int.ipp"
43 
44 #include <algorithm>
45 #include <boost/random/random_number_generator.hpp>
46 
47 // Test that uniform_int<> can be used with std::random_shuffle
48 // Author: Jos Hickson
BOOST_AUTO_TEST_CASE(test_random_shuffle)49 BOOST_AUTO_TEST_CASE(test_random_shuffle)
50 {
51 #ifndef BOOST_NO_CXX98_RANDOM_SHUFFLE
52     typedef boost::uniform_int<> distribution_type;
53     typedef boost::variate_generator<boost::mt19937 &, distribution_type> generator_type;
54 
55     boost::mt19937 engine1(1234);
56     boost::mt19937 engine2(1234);
57 
58     boost::random::random_number_generator<boost::mt19937> referenceRand(engine1);
59 
60     distribution_type dist(0,10);
61     generator_type testRand(engine2, dist);
62 
63     std::vector<int> referenceVec;
64 
65     for (int i = 0; i < 200; ++i) {
66         referenceVec.push_back(i);
67     }
68 
69     std::vector<int> testVec(referenceVec);
70 
71     std::random_shuffle(referenceVec.begin(), referenceVec.end(), referenceRand);
72     std::random_shuffle(testVec.begin(), testVec.end(), testRand);
73 
74     BOOST_CHECK_EQUAL_COLLECTIONS(
75         testVec.begin(), testVec.end(),
76         referenceVec.begin(), referenceVec.end());
77 #endif
78 }
79