1

Я пишу контрольные примеры для высокопроизводительной системы сжатия данных. (ну, не совсем так, но для целей тестирования это можно описать так)

Для теста я должен создать 500 ГБ ~ 3 ТБ случайных файлов в каталоге.

На данный момент я использую /dev/urandom но это проблема случайности.

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

Есть ли способ генерировать такое количество случайных данных без необходимости их постоянного хранения и обеспечения их предсказуемости?

что-то вроде: заполнить одну функцию, сгенерировать данные, проверить данные, зафиксировать начальное значение, поверить, что вы будете получать одни и те же сгенерированные данные каждый раз.

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

Есть ли что-то похожее на вышесказанное с тем удобством в UNIX, которое предоставляет /dev /urandom?

1 ответ1

0

Вы можете реализовать линейное согласование PRNG (https://en.wikipedia.org/wiki/Linear_congruential_generator).

В основном это рекуррентные отношения, где выходные данные на каждом шаге служат начальным числом для следующего шага:

X_ {n+ 1} = (a * X_n + c) mod m

Числа a, X_0, c и m следует выбирать так, чтобы они максимизировали длину последовательности до повторения. Приятной особенностью является то, что при одинаковом начальном семени они каждый раз создают одну и ту же последовательность.

Но они НЕ подходят для криптографических целей, так как производят "случайные" числа с очень небольшой энтропией.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .