Я программирую LFSR (регистр сдвига с линейной обратной связью) в программном обеспечении для целей обучения и столкнулся с некоторыми ограничениями в его использовании в качестве генератора псевдослучайных чисел (PRNG).
- Если начальное число имеет несколько битов «1» и используется несколько отводов, требуется большое «время запуска» для получения явно случайного вывода с почти равным распределением между прогонами «1» и «0» или «короткими» 0. Я предполагаю, что при большем количестве нажатий такой запуск будет намного быстрее, но все таблицы, которые я рассчитал, дают два или четыре нажатия.
- Последовательные числа сильно коррелированы, что и следовало ожидать, учитывая, что если выходной бит равен 0, следующее число будет половиной предыдущего. Для 15-разрядного LFSR с ответвлениями [15, 14] построение пары последовательных чисел в виде точек на плоскости дает следующее. Идеальный PRNG должен распределить эти точки повсюду.
Я знаю, что LFSR используются в качестве быстрого аппаратного счетчика, но я также видел, что он используется в качестве PRNG для создания белого шума. Как это используется в таких реальных приложениях с таким низким качеством?