Для генерации карты алгоритмом «diamond-square» (кстати, устоявшееся русское название есть?) требуется простая быстрая функция, которая преобразовывала бы координаты в случайное число от 0 до 3. Если взять линейный конгруэнтный генератор ( seed = seed * 1664525 + 1013904223; random = seed & 3 ), на первом шаге получается слишком периодично "... 1 2 3 0 1 2 3 ...". Хуже того, с большой вероятностью входные значения имеют период кратный 4. Если прогнать 6-10 его циклов — слишком долго, и период — бОльшая степень 2.
Есть ли что-либо столь же быстрое, но менее предсказуемое?