Сообщение от Igor
Мне кажется, куча обращений к массиву не имеет смысла.
Я бы предложил просто построить какую-нибудь хитрую функцию от трёх переменных.
например, при инициализации задавать параметры a и с, и пусть функция rand возвращает (a + c * (x ^ (x >> 5) ^ (y<<3-1) ^ (z >> 3 + z))) & 0xFF.
Если хочется, можно запихать в массив данные с нужным распределением (например, нормальным), и один раз читать оттуда по "рандомной" позиции.
|
Ну тут не только генератор белого шума, тут еще и градиентный, белый шум вот этой штукой отдается:
//выдает по координате значение из фэйкового бесконечного массива
private static int rand(int x, int y, int z){
int x0 =(256+(x%256))%256;
int y0 =(256+(y%256))%256;
int z0 =(256+(z%256))%256;
return randData[ x0 + randData[ y0 + randData[ z0 ] ] ];
}
в х0,y0,z0 я как умею обрезаю любое число чтобы оно в 0...255 попало, защита от выхода за границы массива.
а три обращения к массиву на точку не такая уж и куча. Но я хз, я в функции не умею.