Мне нужен какой-то метод для создания довольно длинной последовательности случайных чисел, с помощью которой я могу перевернуть назад и вперед. Как машина с "следующей" и "предыдущей" кнопками, это даст вам случайные числа.
Кое-что вроде 10-битного разрешения (т.е. положительных целых чисел в диапазоне от 0 до 1023) достаточно, а последовательность из > 100 тыс. чисел. Это для простого игрового типа, Мне не нужна случайная случайность шифрования или что-то еще, но я хочу, чтобы он чувствовал себя довольно случайным. У меня есть ограниченный объем памяти, хотя я не могу просто создать кусок случайных данных и пройти через него. Мне нужно получить цифры в "интерактивном времени" - я могу легко потратить несколько мс, думая о следующем номере, но не намного больше, чем это. В конце концов он будет работать на каком-то микроконтроллере, возможно, просто на Arduino.
Я мог бы сделать это с помощью простого линейного конгруэнтного генератора (LCG). Переход вперед прост, чтобы вернуться назад, мне нужно было кэшировать самые последние цифры и хранить несколько точек с интервалами, чтобы я мог воссоздать последовательность оттуда.
Но может быть, есть какой-то псевдослучайный генератор, который позволяет вам двигаться вперед и вперед? Должна быть возможность подключить два линейных регистратора сдвига обратной связи (LFSR) для вращения в разных направлениях, нет?
Или, может быть, я смогу справиться с искажением номера индекса, используя какую-то хеш-функцию? Я попытаюсь это сделать первым.
Любые другие идеи?