У меня есть цикл, где я добавляю шум к некоторым точкам; позже они используются в качестве основы для некоторых статистических тестов.
Наборы данных достаточно велики, поэтому я бы хотел распараллелить их, используя openMP, чтобы ускорить процесс. Проблема возникает, когда я хочу иметь несколько PRNG. У меня есть свой собственный класс PRNG, основанный на методе NR по модулю (я думаю, rand4), но я не уверен, как правильно посеять PRNG, чтобы обеспечить соответствующую энтропию
Normalliy Я бы сделал что-то подобное
prng.initTimer();
Но если у меня есть массив prngs, по одному на рабочий поток, то я не могу просто вызывать initTimer для каждого экземпляра - таймер может не измениться, а закрывающиеся таймеры могут ввести корреляцию.
Мне нужно защищаться от естественных корреляций, а не от злоумышленников (это экспериментальные данные), поэтому мне нужен безопасный способ заполнения массива rng.
Я думал о простом использовании
prng[0].initTimer()
for(int i=1; i<numRNGs; i++)
prng[i].init(prng[0].getRandNum());
Затем вызывается мой цикл, но я не уверен, что это приведет к корреляциям в методе по модулю.