У меня такое чувство, что при смещенном ГСЧ повторные прогоны Кнута будут перемешивать все перестановки, но я не могу доказать это (это зависит от периода ГСЧ и , насколько это смещено ).
Итак, давайте обратимся к вопросу: учитывая алгоритм, который требует случайного ввода и смещенного ГСЧ, легче ли де-перекосить выходные данные алгоритма или де-перекосить выходные данные ГСЧ?
Неудивительно, что последнее намного проще (и представляет более широкий интерес): для этого есть несколько стандартных методов. Простой метод, благодаря фон Нейману, заключается в следующем: учитывая поток битов от смещенного ГСЧ, принимать биты парами, отбрасывать каждую (0,0) и (1,1) пару, возвращать 1 для каждой (1,0) пара и 0 для каждой (0,1) пары. Этот метод предполагает, что биты взяты из потока, где каждый бит имеет такую же вероятность быть 0 или 1, как любой другой бит в потоке, и что биты не коррелированы. Элиас обобщил технику фон Неймана на более эффективную схему (такую, где отбрасывается меньше битов).
Но даже сильно смещенные или коррелированные биты могут содержать полезные величины случайности, например с использованием метода, основанного на быстром преобразовании Фурье .
Другой вариант - передать смещенный вывод ГСЧ в криптографически сильную функцию, например, алгоритм дайджеста сообщения, и использовать его вывод.
Для получения дополнительной информации о том, как отключить генераторы случайных чисел, я предлагаю вам прочитать Рекомендации по случайности для безопасности RFC .
Моя точка зрения заключается в том, что качество, если выходные данные алгоритма на основе случайных чисел ограничены сверху энтропией, обеспечиваемой ГСЧ: если оно чрезвычайно смещено, выходные данные будут чрезвычайно смещены, независимо от того, что вы делаете. Алгоритм не может сжать больше энтропии, чем тот, который содержится в смещенном случайном битовом потоке. Хуже того: он, вероятно, потеряет несколько случайных битов. Даже если предположить, что алгоритм работает с предвзятым ГСЧ, для получения хорошего результата вам придется приложить вычислительные усилия, по крайней мере, такие же, как усилия, которые потребовались бы для отвода ГСЧ (но, вероятно, для этого потребуется больше усилий, так как вам придется одновременно запускать алгоритм и «победить» смещение).
Если ваш вопрос носит чисто теоретический характер, пожалуйста, не обращайте на него внимания. Если это целесообразно, тогда, пожалуйста, серьезно подумайте о снятии перекоса с вашего ГСГ, вместо того, чтобы делать предположения о выводе алгоритма.