Whooo! Спасибо за такой вклад!

олагая, что мы создаем только менее 20 объектов класса Blob и что касается эффективности (времени выполнения) и проблем с управлением памятью, есть ли лучший вариант между:

Установка генератора случайных чисел и сгенерированных распределений в качестве закрытых членов класса, таких как:

class Blob {
private:
std::mt19937 engine;
std::uniform_real_distribution<double> R_distribution;
std::binomial_distribution<int> B_distribution;
}

и используя их непосредственно в методах Blob. Таким образом, когда мы вызываем распределение, мы также изменяем состояние двигателя, который является членом.

Или установить генератор случайных чисел в качестве членов частного класса и передать распределение по ссылке на методы? Например:

class Blob {
private:
std::mt19937 engine; //engine
}

void Blob::run() {
int blabla = 10;
std::uniform_real_distribution<double> R_distribution(0, 10);
do_something(blabla, R_distribution);
...
}

При прохождении по ссылке вызывать более низкие издержки в целом, имеет ли это значение в этом случае в частности? Как масштабируется общий вопрос при вызове дистрибутивов огромное количество раз (10 ^ 9 или более)?