>Яндекс Музыку, которая рядом не стоит с более дешевыми Apple Music и YouTube Music? Я уже не говорю про Spotify, но он, конечно, дороже.
Это по каким таким критериям «и рядом не стоит»?
>Яндекс Диск, у которого есть ограничение на количество скачиваний по публичной ссылке?
Это прежде всего личное хранилище, а не файлообменник.
>Что же они могут предложить, мне правда интересно.
Вам — ничего. А адекватным людям Яндекс.Такси, доставка еды и так далее.
То, что «quick and dirty» понятно было с самого начала.
Должна (обязана) существовать функция (алгоритм), при которой качество случайности noise(x = 1 to 1000) будет не хуже, чем тысяча последовательных вызовов random() любого адекватного ЯП.
О реализации математике этой функции и был мой изначальный вопрос. Увы, но похоже, что что нет вариантов, кроме как сделать заранее большой массив случайных чисел на пару десятков мегабайт, а noise(x) будет возвращать число по индексу.
А когда приложение из себя строит чуть ли не операционную систему, мне начинает казаться, что это либо прикол такой [...] Такая же болезнь в своё время поразила разработчиков Nero.
Видите ли в чем дело — вы просто не покупали этот Nero. Если бы у вас был только лицензионный софт, купленный на свои кровные, без излишеств, то вряд ли бы вы возмущались дополнительному функционалу.
Согласитесь, это стоило бы того, чтобы описать. К тому же, предполагаю, это не самый оптимальный вариант, а с точки зрения «случайности» — вообще караул. Здесь очевидна попытка сделать нечто по мотивам линейного конгруэнтного ГПСЧ, но действительно продуманных и обоснованных описаний мне найти так и не удалось.
Интересует математический аппарат функции noise(x), noise(x,y) (и т.д. размерностей), которая возвращает одно и то же случайное значение для одних и тех же аргументов (координат).
В известном переводе на Хабре это реализуется какой-то чехардой с числами, что Кнут в гробу переворачивается:
function Noise(integer x)
x = (x<<13) ^ x;
return ( 1.0 - ( (x * (x * x * 15731 + 789221) + 1376312589) & 7fffffff) / 1073741824.0);
end function
function Noise(integer x, integer y)
n = x + y * 57
n = (n<<13) ^ n;
return ( 1.0 - ( (n * (n * n * 15731 + 789221) + 1376312589) & 7fffffff) / 1073741824.0);
end function
Но это, конечно, несерьезно. Таким образом, меня интересует, повторюсь, математический аппарат функции, которая возвращает одно и то же случайное значение для одних и тех же координат. Ни одна из статей на Хабре не описывает данную проблему.
Было бы гораздо интереснее понять как работает собственно сама функция noise(x, y). Ковырять исходники библиотеки это, конечно, могло бы быть весело, но математический аппарат простым языком до сих пор на русском языке не описан.
В оправдание скажу, что второй глазок больше похож на вторую вспышку — одна теплая, вторая холодная, как на некоторых бывает.
Это по каким таким критериям «и рядом не стоит»?
>Яндекс Диск, у которого есть ограничение на количество скачиваний по публичной ссылке?
Это прежде всего личное хранилище, а не файлообменник.
>Что же они могут предложить, мне правда интересно.
Вам — ничего. А адекватным людям Яндекс.Такси, доставка еды и так далее.
Должна (обязана) существовать функция (алгоритм), при которой качество случайности noise(x = 1 to 1000) будет не хуже, чем тысяча последовательных вызовов random() любого адекватного ЯП.
О реализации математике этой функции и был мой изначальный вопрос. Увы, но похоже, что что нет вариантов, кроме как сделать заранее большой массив случайных чисел на пару десятков мегабайт, а noise(x) будет возвращать число по индексу.
Видите ли в чем дело — вы просто не покупали этот Nero. Если бы у вас был только лицензионный софт, купленный на свои кровные, без излишеств, то вряд ли бы вы возмущались дополнительному функционалу.
В известном переводе на Хабре это реализуется какой-то чехардой с числами, что Кнут в гробу переворачивается:
function Noise(integer x)
x = (x<<13) ^ x;
return ( 1.0 - ( (x * (x * x * 15731 + 789221) + 1376312589) & 7fffffff) / 1073741824.0);
end function
function Noise(integer x, integer y)
n = x + y * 57
n = (n<<13) ^ n;
return ( 1.0 - ( (n * (n * n * 15731 + 789221) + 1376312589) & 7fffffff) / 1073741824.0);
end function
Но это, конечно, несерьезно. Таким образом, меня интересует, повторюсь, математический аппарат функции, которая возвращает одно и то же случайное значение для одних и тех же координат. Ни одна из статей на Хабре не описывает данную проблему.
Типа как доработка газового пистолета до боевого.
2. Суть шума Перлина мне понятна. Непонятен метод «сырых» случайных данных в noise();
Кто-нибудь может объяснить, каким боком приплетены вектора в ГПСЧ?