Потокобезопасное случайное число с тем же начальным значением для потоков Intel TBB

У меня есть объект функции для распараллеливания алгоритма for_each() с использованием потоков строительных блоков,

Функциональный объект использует генератор случайных чисел RND, оператор которого method () генерирует случайное число.

Проблема: мне нужен генератор случайных чисел для 1) инициализации только один раз в функциональном объекте 2) должен быть потокобезопасным и 3) может быть предоставлено то же начальное число, чтобы можно было получить те же результаты.

Я не знаю много о генерации потоковых генераторов случайных чисел в функциональных объектах как таковых. Я попытался использовать свой собственный класс генератора случайных чисел (используя движок, дистрибутив и генераторы) (используя библиотеки boost), но мне нужно что-то простое, например, erand () или что-то подобное, для чего нам не нужно писать отдельный код.

struct func {
 public:
  func() {  } 
  func(int t_) : t(t_) {  }  

 template <typename house_t>
 void operator()(house_t  house)  const  { 

   if ( RND() ) 
   {  //do something with the house } 

 } //operator

 private:
   int t;
 };


 //Parallel for_each
 tbb::parallel_for_each( house.begin(), house.end(), func(t) ); 

Пожалуйста, предложите

0 ответов

Другие вопросы по тегам