1d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant//===----------------------------------------------------------------------===//
2d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant//
3d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant//                     The LLVM Compiler Infrastructure
4d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant//
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details.
7d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant//
8d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant//===----------------------------------------------------------------------===//
9d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant
10d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant// <random>
11d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant
12d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant// template<class RealType = double>
13d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant// class piecewise_constant_distribution
14d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant// {
15d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant//     class param_type;
16d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant
17d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant#include <random>
18d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant#include <limits>
19d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant#include <cassert>
20d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant
21d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnantint main()
22d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant{
23d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant    {
24d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant        typedef std::piecewise_constant_distribution<> D;
25d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant        typedef D::param_type P;
26d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant        double b[] = {10, 14, 16, 17};
27d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant        double p[] = {25, 62.5, 12.5};
28d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant        const size_t Np = sizeof(p) / sizeof(p[0]);
29d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant        P p0(b, b+Np+1, p);
30d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant        P p1 = p0;
31d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant        assert(p1 == p0);
32d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant    }
33d6d1171f2c3f254582ae1d5b9e14cea0ea8e701bHoward Hinnant}
34