std::seed_seq
Определён в заголовочном файле <random> | ||
|---|---|---|
class seed_seq; | (начиная с C++11) |
std::seed_seq принимает последовательность целочисленных данных и на её основе генерирует запрошенное количество 32-битных беззнаковых целых значений. Сгенерированные значения распределяются по всему 32-битному диапазону, даже если принятые значения близки друг к другу.
Этот класс позволяет инициализировать большое количество генераторов случайных чисел или генератор, которому требуется много энтропии, используя небольшое начальное значение или исходную последовательность начальных значений с плохим распределением.
std::seed_seq соответствует требованиям SeedSequence.
Вложенные типы
| Тип | Определение |
|---|---|
result_type |
std::uint_least32_t |
Данные-члены
| Член | Описание |
|---|---|
std::vector<result_type> v | исходная последовательность начальных значений (член-объект, предназначенный только для описания) |
Функции-члены
создаёт и инициализирует объект std::seed_seq (открытая функция-член) |
|
|
operator=
[удалён] |
std::seed_seq не поддерживает присваивание (открытая функция-член) |
| вычисляет равномерно распределённые 32-битные значения с устранённым смещением (открытая функция-член) |
|
| получает количество сохранённых 32-битных значений (открытая функция-член) |
|
| копирует все сохранённые 32-битные значения (открытая функция-член) |
Пример
#include <cstdint>
#include <iostream>
#include <random>
int main()
{
std::seed_seq seq{1, 2, 3, 4, 5};
std::vector<std::uint32_t> seeds(10);
seq.generate(seeds.begin(), seeds.end());
for (std::uint32_t n : seeds)
std::cout << n << '\n';
}
Возможный результат:
4204997637 4246533866 1856049002 1129615051 690460811 1075771511 46783058 3904109078 1534123438 1495905678
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/numeric/random/seed_seq