Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The latest version of this topic can be found at seed_seq Class.
Stores a vector of unsigned integer values that can supply a randomized seed for a random-number engine.
Syntax
class seed_seq
{
public: // types
typedef unsigned int result_type;
// constructors
seed_seq();
template <class T>
seed_seq(initializer_list<T>
initlist);
template <class InputIterator>
seed_seq(InputIterator begin, InputIterator end);
// generating functions
template <class RandomAccessIterator>
void generate(RandomAccessIterator begin, RandomAccessIterator end);
// property functions
size_t size() const;
template <class OutputIterator>
void param(OutputIterator dest) const;
// no copy functions
seed_seq(const seed_seq&) = delete;
void operator=(const seed_seq&) = delete;
};
Types
typedef unsigned int result_type;
The type of the elements of the seed sequence. A 32-bit unsigned integer type.
Constructors
seed_seq();
Default constructor, initializes to have an empty internal sequence.
template<class T>
seed_seq(initializer_list<T> initlist);
Uses initlist to set the internal sequence.
T must be an integer type.
template<class InputIterator>
seed_seq(InputIterator begin, InputIterator end);
Initializes the internal sequence using all elements in the input iterator range provided.
iterator_traits<InputIterator>::value_type must be an integer type.
Members
Generating Functions
template<class RandomAccessIterator> void generate(RandomAccessIterator begin, RandomAccessIterator end);
Populates the elements of the provided sequence using an internal algorithm. This algorithm is affected by the internal sequence with which seed_seq was initialized.
Does nothing if begin == end.
Property Functions
size_t size() const;
Returns the number of elements in the seed_seq.
template<class OutputIterator> void param(OutputIterator dest) const;
Copies the internal sequence into the output iterator dest.
Example
The following code example exercises the three constructors and generates output from the resulting seed_seq instances when assigned to an array. For an example that uses seed_seq with a random number generator, see <random>.
#include <iostream>
#include <random>
#include <string>
#include <array>
using namespace std;
void test(const seed_seq& sseq) {
cout << endl << "seed_seq::size(): " << sseq.size() << endl;
cout << "seed_seq::param(): ";
ostream_iterator<unsigned int> out(cout, " ");
sseq.param(out);
cout << endl;
cout << "Generating a sequence of 5 elements into an array: " << endl;
array<unsigned int, 5> seq;
sseq.generate(seq.begin(), seq.end());
for (unsigned x : seq) { cout << x << endl; }
}
int main()
{
seed_seq seed1;
test(seed1);
seed_seq seed2 = { 1701, 1729, 1791 };
test(seed2);
string sstr = "A B C D"; // seed string
seed_seq seed3(sstr.begin(), sstr.end());
test(seed3);
}
Output
seed_seq::size(): 0
seed_seq::param():
Generating a sequence of 5 elements into an array:
505382999
163489202
3932644188
763126080
73937346
seed_seq::size(): 3
seed_seq::param(): 1701 1729 1791
Generating a sequence of 5 elements into an array:
1730669648
1954224479
2809786021
1172893117
2393473414
seed_seq::size(): 7
seed_seq::param(): 65 32 66 32 67 32 68
Generating a sequence of 5 elements into an array:
3139879222
3775111734
1084804564
2485037668
1985355432
Remarks
Member functions of this class do not throw exceptions.
Requirements
Header: <random>
Namespace: std