用于intel TBB线程的具有相同种子的线程安全随机数

时间:2014-08-05 23:10:26

标签: c++ random thread-safety tbb boost-random

我有一个函数对象,用于使用Thread Building Blocks并行化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 个答案:

没有答案