Я пытаюсь сохранить отдельные случайные начальные числа для разных клиентов (из серверного приложения).
random_r / srandom_r (linux api) нельзя использовать, потому что код должен компилироваться как в mac / linux.
Кажется, я мог бы использовать boost :: random вместо random_r / srandom_r.
Я попытался определить мою случайную функцию (которая является функцией-членом класса) и передать функцию третьему параметру random_shuffle.
random_shuffle( RandomAccessIterator first, RandomAccessIterator last,
RandomNumberGenerator& rand );
ptrdiff_t MyClass::_MyRandom(ptrdiff_t i)
{
int result;
boost::uniform_int<> numberInterval( 1, 10000);
boost::variate_generator< RNGType, boost::uniform_int<> >
dice(mRng, numberInterval); // mRng is boost::mt19937 type instance variable
result = dice();
// random_r(mRandomData, &result);
result = result % i;
return result;
}
какова здесь правильная форма bind ()?
mRng.seed(mRandomSeed); //mRandomSeed will be different for different clients.
//I'm trying to random_shuffle a vector with the random seed.
random_shuffle(v.begin(), v.end(), boost::bind(&MyClass::_MyRandom, _1));
Будучи не слишком знакомым с boost :: random boost :: bind, я не уверен, сработает ли мой подход.
Любой комментарий о направлении будет также оценен.