Генератор нерекурсивных случайных чисел - PullRequest
1 голос
/ 12 марта 2019

Я искал псевдо-ГСЧ алгоритмы, но все, что я могу найти, похоже, генерирует следующее число, используя предыдущий результат в качестве начального числа. Есть ли способ генерировать их не рекурсивно?

Сценарий, в котором мне это нужно, во время параллельного программирования OpenCL, каждый поток / пиксель нуждается в независимом ГСЧ. Я попытался засечь их, используя BIG_NUMBER + work_id, но в результате получился сильный визуальный паттерн. Я пробовал несколько разных алгоритмов RNG, и у всех есть эта проблема. Очевидно, они гарантируют, что числа независимы, только если вы генерируете рекурсивно, но не когда вы используете последовательные числа в качестве начального числа.

Итак, мой вопрос: Могу ли я сгенерировать массив случайных чисел из массива последовательных чисел независимо и с постоянным временем для каждого числа? Или это математически невозможно?

В качестве решения моей проблемы openCL я могу просто предварительно сгенерировать огромный массив случайных чисел сначала и сохранить их в памяти GPU, а затем использовать их позже, используя seed в качестве индекса. Но мне любопытно, что вопрос выше, потому что это кажется очень возможным, просто делая кучу переполнения и отсечки, в соответствии с моим очень простым пониманием теории хаоса.

1 Ответ

1 голос
/ 12 марта 2019

Могу ли я сгенерировать массив случайных чисел из массива последовательных чисел независимо и с постоянным временем для каждого числа?Или это математически невозможно?

Конечно, вы можете - используйте блочный шифр в режиме подсчета.Он обычно известен как RNG на основе счетчиков, первым широко используемым был RNG * Fortuna

...