From Jason Turner

[rand.synopsis]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmprx0a0mme/{from.md → to.md} +44 -15
tmp/tmprx0a0mme/{from.md → to.md} RENAMED
@@ -4,65 +4,94 @@
4
  #include <initializer_list> // see [initializer.list.syn]
5
 
6
  namespace std {
7
  // [rand.req.urng], uniform random bit generator requirements
8
  template<class G>
9
- concept uniform_random_bit_generator = see below;
10
 
11
  // [rand.eng.lcong], class template linear_congruential_engine
12
  template<class UIntType, UIntType a, UIntType c, UIntType m>
13
- class linear_congruential_engine;
14
 
15
  // [rand.eng.mers], class template mersenne_twister_engine
16
  template<class UIntType, size_t w, size_t n, size_t m, size_t r,
17
  UIntType a, size_t u, UIntType d, size_t s,
18
  UIntType b, size_t t,
19
  UIntType c, size_t l, UIntType f>
20
  class mersenne_twister_engine;
21
 
22
  // [rand.eng.sub], class template subtract_with_carry_engine
23
  template<class UIntType, size_t w, size_t s, size_t r>
24
- class subtract_with_carry_engine;
25
 
26
  // [rand.adapt.disc], class template discard_block_engine
27
  template<class Engine, size_t p, size_t r>
28
- class discard_block_engine;
29
 
30
  // [rand.adapt.ibits], class template independent_bits_engine
31
  template<class Engine, size_t w, class UIntType>
32
- class independent_bits_engine;
33
 
34
  // [rand.adapt.shuf], class template shuffle_order_engine
35
  template<class Engine, size_t k>
36
  class shuffle_order_engine;
37
 
 
 
 
 
38
  // [rand.predef], engines and engine adaptors with predefined parameters
39
- using minstd_rand0 = see below;
40
- using minstd_rand = see below;
41
- using mt19937 = see below;
42
- using mt19937_64 = see below;
43
- using ranlux24_base = see below;
44
- using ranlux48_base = see below;
45
- using ranlux24 = see below;
46
- using ranlux48 = see below;
47
  using knuth_b = see below;
 
 
48
 
49
  using default_random_engine = see below;
50
 
51
  // [rand.device], class random_device
52
  class random_device;
53
 
54
  // [rand.util.seedseq], class seed_seq
55
  class seed_seq;
56
 
57
  // [rand.util.canonical], function template generate_canonical
58
- template<class RealType, size_t bits, class URBG>
59
  RealType generate_canonical(URBG& g);
60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  // [rand.dist.uni.int], class template uniform_int_distribution
62
  template<class IntType = int>
63
- class uniform_int_distribution;
64
 
65
  // [rand.dist.uni.real], class template uniform_real_distribution
66
  template<class RealType = double>
67
  class uniform_real_distribution;
68
 
 
4
  #include <initializer_list> // see [initializer.list.syn]
5
 
6
  namespace std {
7
  // [rand.req.urng], uniform random bit generator requirements
8
  template<class G>
9
+ concept uniform_random_bit_generator = see below; // freestanding
10
 
11
  // [rand.eng.lcong], class template linear_congruential_engine
12
  template<class UIntType, UIntType a, UIntType c, UIntType m>
13
+ class linear_congruential_engine; // partially freestanding
14
 
15
  // [rand.eng.mers], class template mersenne_twister_engine
16
  template<class UIntType, size_t w, size_t n, size_t m, size_t r,
17
  UIntType a, size_t u, UIntType d, size_t s,
18
  UIntType b, size_t t,
19
  UIntType c, size_t l, UIntType f>
20
  class mersenne_twister_engine;
21
 
22
  // [rand.eng.sub], class template subtract_with_carry_engine
23
  template<class UIntType, size_t w, size_t s, size_t r>
24
+ class subtract_with_carry_engine; // partially freestanding
25
 
26
  // [rand.adapt.disc], class template discard_block_engine
27
  template<class Engine, size_t p, size_t r>
28
+ class discard_block_engine; // partially freestanding
29
 
30
  // [rand.adapt.ibits], class template independent_bits_engine
31
  template<class Engine, size_t w, class UIntType>
32
+ class independent_bits_engine; // partially freestanding
33
 
34
  // [rand.adapt.shuf], class template shuffle_order_engine
35
  template<class Engine, size_t k>
36
  class shuffle_order_engine;
37
 
38
+ // [rand.eng.philox], class template philox_engine
39
+ template<class UIntType, size_t w, size_t n, size_t r, UIntType... consts>
40
+ class philox_engine; // partially freestanding
41
+
42
  // [rand.predef], engines and engine adaptors with predefined parameters
43
+ using minstd_rand0 = see below; // freestanding
44
+ using minstd_rand = see below; // freestanding
45
+ using mt19937 = see below; // freestanding
46
+ using mt19937_64 = see below; // freestanding
47
+ using ranlux24_base = see below; // freestanding
48
+ using ranlux48_base = see below; // freestanding
49
+ using ranlux24 = see below; // freestanding
50
+ using ranlux48 = see below; // freestanding
51
  using knuth_b = see below;
52
+ using philox4x32 = see below; // freestanding
53
+ using philox4x64 = see below; // freestanding
54
 
55
  using default_random_engine = see below;
56
 
57
  // [rand.device], class random_device
58
  class random_device;
59
 
60
  // [rand.util.seedseq], class seed_seq
61
  class seed_seq;
62
 
63
  // [rand.util.canonical], function template generate_canonical
64
+ template<class RealType, size_t digits, class URBG>
65
  RealType generate_canonical(URBG& g);
66
 
67
+ namespace ranges {
68
+ // [alg.rand.generate], generate_random
69
+ template<class R, class G>
70
+ requires output_range<R, invoke_result_t<G&>> &&
71
+ uniform_random_bit_generator<remove_cvref_t<G>>
72
+ constexpr borrowed_iterator_t<R> generate_random(R&& r, G&& g);
73
+
74
+ template<class G, output_iterator<invoke_result_t<G&>> O, sentinel_for<O> S>
75
+ requires uniform_random_bit_generator<remove_cvref_t<G>>
76
+ constexpr O generate_random(O first, S last, G&& g);
77
+
78
+ template<class R, class G, class D>
79
+ requires output_range<R, invoke_result_t<D&, G&>> && invocable<D&, G&> &&
80
+ uniform_random_bit_generator<remove_cvref_t<G>> &&
81
+ is_arithmetic_v<invoke_result_t<D&, G&>>
82
+ constexpr borrowed_iterator_t<R> generate_random(R&& r, G&& g, D&& d);
83
+
84
+ template<class G, class D, output_iterator<invoke_result_t<D&, G&>> O, sentinel_for<O> S>
85
+ requires invocable<D&, G&> && uniform_random_bit_generator<remove_cvref_t<G>> &&
86
+ is_arithmetic_v<invoke_result_t<D&, G&>>
87
+ constexpr O generate_random(O first, S last, G&& g, D&& d);
88
+ }
89
+
90
  // [rand.dist.uni.int], class template uniform_int_distribution
91
  template<class IntType = int>
92
+ class uniform_int_distribution; // partially freestanding
93
 
94
  // [rand.dist.uni.real], class template uniform_real_distribution
95
  template<class RealType = double>
96
  class uniform_real_distribution;
97