Спасибо за все ответы,
а также для тех, кто может столкнуться с подобным вопросом, когда я сталкивался с подобным вопросом, я нашел решение, которое не совсем то, о чем я просил, но отвечающее всем требованиям.
Это класс перлин , который можно найти здесь .
Я не уверен, насколько это сложно с вычислительной точки зрения по сравнению с обычным генератором случайных чисел, что вызывает озабоченность, поскольку одной из запланированных платформ является Android. Кроме того, перлин-шум не то же самое, что псевдослучайность, но, насколько я могу судить, высокое значение октавы и / или частоты должно обеспечивать подходящую случайность для некриптографических целей, где статистический уровень истинной случайности не так важен как простое проявление случайности.
Это решение позволяет заполнять, а также позволяет выбирать случайный набор из любой точки, другими словами, случайность произвольного доступа.
Вот пример набора обычной случайности c ++ (rand% 200) в левом столбце для сравнения и перлин-шума (с эквивалентом% 200) справа:
91 , 100
48 , 97
5 , 90
93 , 76
197 , 100
97 , 114
132 , 46
190 , 67
118 , 103
78 , 96
143 , 110
187 , 108
139 , 79
69 , 58
156 , 81
123 , 128
84 , 98
15 , 105
178 , 117
10 , 82
13 , 110
182 , 56
10 , 96
144 , 64
133 , 105
оба были посеяны до 0
параметры перлин-шума были
octaves = 8
amplitude = 100
frequency = 9999
width/height = 10000,100
последовательный порядок выборки для шума перлина был просто
for (int i=0;i<24;i++)
floor(Get(i,i)+100);
//amplitude 100 generates noise between -100 and 100,
//so adding 100 generates between 0 and 200