Генерировать большие объёмы случайных данных, буквально гигабайты в секунду? Когда нужны просто большие несжимаемые массивы.
Например, для генерации сетевого трафика или заполнения накопителей данных (HDD, SSD, NVMe) или образов дисков виртуальных машин.
Один из наиболее простых и много раз проверенных вариантов:
var x = 12345;
...
x ^= x >> 12;
x ^= x << 25;
x ^= x >> 27;
var random = x * 0x2545F4914F6CDD1DULL;
... отдаём random потребителю
... сохраняем вместо 12345
x = random;
Это частный случай хорошо известного подхода, вполне корректный и стоящий в одном ряду со многими другими
Нет смысла вычитывать данных из /dev/random
. Или насиловать процессор генераторами псевдослучайных чисел из стандартной библиотеки своего тулчейна.
Они потому и низкопроизводительные, что управляют распределением. Например, выдавая нормальное распределение случайных величин — стандартное распределение, Гаусса — Лапласа, с математическим ожиданием μ = 0 и стандартным отклонением σ = 1.
А получать большие массивы данных в виде псевдослучайной последовательности с периодом 2^64 можно и гораздо более простыми способами.
При разных прогонах можно использовать одно и то же начальное значение. Тогда генерируются одинаковые гигабайты данных, обеспечивающие воспроизводимость с повторяемостью, но и без необходимости их где-то сохранять.