test_old_uniform_int_distribution.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. #include <boost/random/uniform_int.hpp>
  12. #include <limits>
  13. #define BOOST_RANDOM_DISTRIBUTION boost::uniform_int<>
  14. #define BOOST_RANDOM_ARG1 a
  15. #define BOOST_RANDOM_ARG2 b
  16. #define BOOST_RANDOM_ARG1_DEFAULT 0
  17. #define BOOST_RANDOM_ARG2_DEFAULT 9
  18. #define BOOST_RANDOM_ARG1_VALUE 5
  19. #define BOOST_RANDOM_ARG2_VALUE 250
  20. #define BOOST_RANDOM_DIST0_MIN 0
  21. #define BOOST_RANDOM_DIST0_MAX 9
  22. #define BOOST_RANDOM_DIST1_MIN 5
  23. #define BOOST_RANDOM_DIST1_MAX 9
  24. #define BOOST_RANDOM_DIST2_MIN 5
  25. #define BOOST_RANDOM_DIST2_MAX 250
  26. #define BOOST_RANDOM_TEST1_PARAMS (0, 9)
  27. #define BOOST_RANDOM_TEST1_MIN 0
  28. #define BOOST_RANDOM_TEST1_MAX 9
  29. #define BOOST_RANDOM_TEST2_PARAMS (10, 19)
  30. #define BOOST_RANDOM_TEST2_MIN 10
  31. #define BOOST_RANDOM_TEST2_MAX 19
  32. #include "test_distribution.ipp"
  33. #define BOOST_RANDOM_UNIFORM_INT boost::uniform_int
  34. #include "test_uniform_int.ipp"
  35. #include <algorithm>
  36. #include <boost/random/random_number_generator.hpp>
  37. // Test that uniform_int<> can be used with std::random_shuffle
  38. // Author: Jos Hickson
  39. BOOST_AUTO_TEST_CASE(test_random_shuffle)
  40. {
  41. #ifndef BOOST_NO_CXX98_RANDOM_SHUFFLE
  42. typedef boost::uniform_int<> distribution_type;
  43. typedef boost::variate_generator<boost::mt19937 &, distribution_type> generator_type;
  44. boost::mt19937 engine1(1234);
  45. boost::mt19937 engine2(1234);
  46. boost::random::random_number_generator<boost::mt19937> referenceRand(engine1);
  47. distribution_type dist(0,10);
  48. generator_type testRand(engine2, dist);
  49. std::vector<int> referenceVec;
  50. for (int i = 0; i < 200; ++i) {
  51. referenceVec.push_back(i);
  52. }
  53. std::vector<int> testVec(referenceVec);
  54. std::random_shuffle(referenceVec.begin(), referenceVec.end(), referenceRand);
  55. std::random_shuffle(testVec.begin(), testVec.end(), testRand);
  56. BOOST_CHECK_EQUAL_COLLECTIONS(
  57. testVec.begin(), testVec.end(),
  58. referenceVec.begin(), referenceVec.end());
  59. #endif
  60. }