Я ищу генератор псевдослучайных чисел, который бы работал быстро, когда перед генерацией каждого числа ему дается начальное число. Большинство генераторов, которые я видел до сих пор, предполагают, что вы устанавливаете начальное число один раз, а затем генерируете длинную последовательность чисел. Единственное, что похоже на то, что я видел до сих пор, — это шум Перлина, но он генерирует слишком «гладкие» данные — для аналогичных входных данных он имеет тенденцию давать аналогичные результаты.
Объявление генератора должно выглядеть примерно так:
Или:
Код: Выделить всё
int RandomNumber3(int seedX, int seedY, int seedZ);
Я думаю, что хорошего RandomNumber1 должно быть достаточно, поскольку можно реализовать RandomNumber3, хешируя его входные данные и передавая результат в RandomNumber1, но я написал второй прототип на случае, если некоторая реализация может использовать независимые входные данные.
Предполагаемое использование этого генератора — использовать его для генератора процедурного контента, например, создание леса путем размещения деревьев в сетке и определение случайного вида дерева и случайного пространственного смещения для каждого местоположения.
Генератор должен быть очень эффективным (менее 500 циклов ЦП), поскольку процедурный контент создается в огромных количества в реальном времени во время рендеринга.
Подробнее здесь:
https://stackoverflow.com/questions/167 ... al-content