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 InputIterator>
16 // discrete_distribution(InputIterator firstW, InputIterator lastW);
17
18 #include <random>
19 #include <cassert>
20
main()21 int main()
22 {
23 {
24 typedef std::discrete_distribution<> D;
25 double p0[] = {1};
26 D d(p0, p0);
27 std::vector<double> p = d.probabilities();
28 assert(p.size() == 1);
29 assert(p[0] == 1);
30 }
31 {
32 typedef std::discrete_distribution<> D;
33 double p0[] = {10};
34 D d(p0, p0+1);
35 std::vector<double> p = d.probabilities();
36 assert(p.size() == 1);
37 assert(p[0] == 1);
38 }
39 {
40 typedef std::discrete_distribution<> D;
41 double p0[] = {10, 30};
42 D d(p0, p0+2);
43 std::vector<double> p = d.probabilities();
44 assert(p.size() == 2);
45 assert(p[0] == 0.25);
46 assert(p[1] == 0.75);
47 }
48 {
49 typedef std::discrete_distribution<> D;
50 double p0[] = {30, 10};
51 D d(p0, p0+2);
52 std::vector<double> p = d.probabilities();
53 assert(p.size() == 2);
54 assert(p[0] == 0.75);
55 assert(p[1] == 0.25);
56 }
57 {
58 typedef std::discrete_distribution<> D;
59 double p0[] = {30, 0, 10};
60 D d(p0, p0+3);
61 std::vector<double> p = d.probabilities();
62 assert(p.size() == 3);
63 assert(p[0] == 0.75);
64 assert(p[1] == 0);
65 assert(p[2] == 0.25);
66 }
67 {
68 typedef std::discrete_distribution<> D;
69 double p0[] = {0, 30, 10};
70 D d(p0, p0+3);
71 std::vector<double> p = d.probabilities();
72 assert(p.size() == 3);
73 assert(p[0] == 0);
74 assert(p[1] == 0.75);
75 assert(p[2] == 0.25);
76 }
77 {
78 typedef std::discrete_distribution<> D;
79 double p0[] = {0, 0, 10};
80 D d(p0, p0+3);
81 std::vector<double> p = d.probabilities();
82 assert(p.size() == 3);
83 assert(p[0] == 0);
84 assert(p[1] == 0);
85 assert(p[2] == 1);
86 }
87 }
88