[rand.util.seedseq] (original) (raw)

29 Numerics library [numerics]

29.5 Random number generation [rand]

29.5.8 Utilities [rand.util]

29.5.8.1 Class seed_seq [rand.util.seedseq]

namespace std { class seed_seq { public: using result_type = uint_least32_t; seed_seq() noexcept;template<class T> seed_seq(initializer_list<T> il);template<class InputIterator> seed_seq(InputIterator begin, InputIterator end);template<class RandomAccessIterator> void generate(RandomAccessIterator begin, RandomAccessIterator end); size_t size() const noexcept;template<class OutputIterator> void param(OutputIterator dest) const; seed_seq(const seed_seq&) = delete;void operator=(const seed_seq&) = delete;private: vector<result_type> v; };}

Postconditions: v.empty() is true.

template<class T> seed_seq(initializer_list<T> il);

Constraints: T is an integer type.

Effects: Same as seed_seq(il.begin(), il.end()).

template<class InputIterator> seed_seq(InputIterator begin, InputIterator end);

Mandates: iterator_traits<InputIterator>​::​value_type is an integer type.

Effects: Initializes vby the following algorithm:for (InputIterator s = begin; s != end; ++s) v.push_back((*s));

template<class RandomAccessIterator> void generate(RandomAccessIterator begin, RandomAccessIterator end);

Mandates: iterator_traits<RandomAccessIterator>​::​​value_type is an unsigned integer type capable of accommodating 32-bit quantities.

Effects: Does nothing if begin == end.

Otherwise, with and , fills the supplied range [begin,end) according to the following algorithm in which each operation is to be carried out modulo , each indexing operator applied to begin is to be taken modulo n, and T(x) is defined as x xor(x rshift27):

Throws: What and when RandomAccessIterator operations of beginand end throw.

size_t size() const noexcept;

Returns: The number of 32-bit units that would be returned by a call to param().

Complexity: Constant time.

template<class OutputIterator> void param(OutputIterator dest) const;

Effects: Copies the sequence of prepared 32-bit units to the given destination, as if by executing the following statement:copy(v.begin(), v.end(), dest);

Throws: What and when OutputIterator operations of dest throw.