Простые 2 или 3 параметра вычисляют формулу PRNG, которая изменяется быстрее, чем разрешение с плавающей точкой, и производит белый шум?
Я ищу математическую формулу с 2 или 3 параметрами со следующими характеристиками:
- Простой (чем меньше операций, тем лучше)
- Случайный вывод (непериодический)
- Нормализовано (имеется в виду, что выход никогда не будет выходить за пределы заданного диапазона; не имеет значения диапазон, поскольку, когда я знаю диапазон, я могу просто разделить и сложить / вычесть, чтобы получить его в диапазоне от 0 до 1, который я ищу)
- Белый шум (чем больше выборок вы получаете, тем более равномерно распределенные выходы попадают в диапазон возможных выходных значений, без пропусков или горячих точек, в пределах, разрешенных стандартом с плавающей запятой)
- Случайно все время вниз (нет постепенных изменений между выходными значениями, даже если входные значения изменяются на наименьшее значение, которое допускает стандарт с плавающей запятой. Я понимаю, что, учитывая природу случайности, возможно, что два выходных значения могут быть близко друг к другу один раз в время, но это должно происходить только по стечению обстоятельств, а не из-за плавности или периодичности)
- Используются только операции, перечисленные ниже (но, конечно, любые операции, которые могут быть выполнены комбинацией перечисленных ниже, также разрешены)
Мне это нужно, потому что мне нужен хороший источник управляемой случайности для некоторых экспериментов, которые я выполняю с материальными узлами Cycles в Blender. И поскольку именно здесь будет реализована формула, доступны только следующие операции:
- прибавление
- Вычитание
- умножение
- разделение
- Мощность (X в степень Y)
- Логарифм (я думаю, что это X Log Y; я не очень знаком с операцией логарифма, поэтому я не уверен на 100%, достаточно ли этого, чтобы указать, какой это тип логарифма; дайте мне знать, если вам нужна дополнительная информация о Это)
- Синус
- Косинус
- касательный
- Арксинус
- Арккосинус
- Арктангенс (не Atan2, но он может быть создан путем объединения операций при необходимости)
- Минимум (возвращает наименьшее из 2 чисел)
- Максимум (возвращает наибольшее из 2 чисел)
- Round (Возвращает ближайший номер раунда к входу)
- Меньше чем (Возвращает 1, если X меньше Y, иначе ноль)
- Больше чем (Возвращает 1, если X больше, чем Y, иначе ноль)
- Modulo (Создает пилообразный паттерн периода Y; для положительных значений X он находится в диапазоне от 0 до Y, а для отрицательных значений X он находится в диапазоне от -Y до нуля)
- Абсолют (удаляет знак входного значения, делает его положительным, если оно отрицательное, ничего не делает, если оно уже положительное)
Здесь нет ни итераций, ни циклических функций (и, конечно, ветвление может быть выполнено только путем вычисления всех ветвей, а затем выполняется что-то вроде умножения результатов ветвей, не предназначенных для взятия нуля, и последующего сложения результатов всех из них. все вместе).