Conversation

Несерьёзный Выдумщик

Генерировать большие объёмы случайных данных, буквально гигабайты в секунду? Когда нужны просто большие несжимаемые массивы.

Например, для генерации сетевого трафика или заполнения накопителей данных (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 можно и гораздо более простыми способами.

При разных прогонах можно использовать одно и то же начальное значение. Тогда генерируются одинаковые гигабайты данных, обеспечивающие воспроизводимость с повторяемостью, но и без необходимости их где-то сохранять.

#programming #программирование #софт #трудовыебудни

0
1
1