1//===----------------------------------------------------------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <random>
11
12// template<class IntType = int>
13// class discrete_distribution
14
15// template <class charT, class traits>
16// basic_ostream<charT, traits>&
17// operator<<(basic_ostream<charT, traits>& os,
18//            const discrete_distribution& x);
19//
20// template <class charT, class traits>
21// basic_istream<charT, traits>&
22// operator>>(basic_istream<charT, traits>& is,
23//            discrete_distribution& x);
24
25#include <random>
26#include <sstream>
27#include <cassert>
28
29int main()
30{
31    {
32        typedef std::discrete_distribution<> D;
33        double p0[] = {.3, .1, .6};
34        D d1(p0, p0+3);
35        std::ostringstream os;
36        os << d1;
37        std::istringstream is(os.str());
38        D d2;
39        is >> d2;
40        assert(d1 == d2);
41    }
42}
43