- 4,167
- 68
- 693
Народ! Помогите придумать рандом, зависящий от координат блока (x, y и z).
Задача: чтобы в каждом блоке мира выдавал рандомное, но постоянное значение в заданных приделах.
Пробовал тупо перемножать координаты по типу:
Более менее работает, если диапазон равен 7-ми или 9-ти, например. Однако, если нужно получить 0 или 1, то есть диапазон равен 2, уже сложнее... На чётной высоте, естественно, выдаёт стабильно 0.
То есть метода должна быть посложнее обычного перемножения...
Может быть, в ваниле уже есть нечто подобное?
Смотрел код из рендера кувшинки... Она же как раз поворачивается под разными углами.
Однако, в битовых операциях я не силён и как его перенастроить под заданный диапазон, не очень понимаю.
Вод код:
Возможно, можно придумать что-нибудь проще и быстрее.
Спасибо за ответы )
Задача: чтобы в каждом блоке мира выдавал рандомное, но постоянное значение в заданных приделах.
Пробовал тупо перемножать координаты по типу:
Код:
(Math.max(1, Math.abs(pos.getX())) * Math.max(1, Math.abs(pos.getY())) * Math.max(1, Math.abs(pos.getZ()))) % диапазон
То есть метода должна быть посложнее обычного перемножения...
Может быть, в ваниле уже есть нечто подобное?
Смотрел код из рендера кувшинки... Она же как раз поворачивается под разными углами.
Однако, в битовых операциях я не силён и как его перенастроить под заданный диапазон, не очень понимаю.
Вод код:
Код:
long l = (long)(x * 3129871L) ^ (long)z * 116129781L ^ (long)y;
l = l * l * 42317861L + l * 11L;
int i1 = (int)(l >> 16 & 3L);
Возможно, можно придумать что-нибудь проще и быстрее.
Спасибо за ответы )