Spec-Zone.ru › C++

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 не поддерживает присваивание
(открытая функция-член)
generate
вычисляет равномерно распределённые 32-битные значения с устранённым смещением
(открытая функция-член)
size
получает количество сохранённых 32-битных значений
(открытая функция-член)
param
копирует все сохранённые 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API