¿Deben pasar distribuciones aleatorias por referencia o ser miembros de objetos en c ++

Suponiendo que solo instanciamos menos de 20 objetos de la clase Blob y con respecto a la eficiencia (ejecución de tiempo) y los problemas de administración de memoria, ¿hay una mejor opción entre:

Establecer el generador aleatorio y las distribuciones generadas como miembros de clase privada como:

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

y usarlos directamente en métodos Blob. Por lo tanto, cuando llamamos a una distribución, también modificamos el estado del motor que es miembro.

¿O establecer el generador aleatorio como miembros de una clase privada y pasar las distribuciones por referencia a los métodos? Por ejemplo:

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);
...
}

Si bien el paso por referencia induce una sobrecarga menor en general, ¿importa en ese caso en particular? ¿Cómo se escala la pregunta general al llamar a las distribuciones una gran cantidad de veces (10 ^ 9 o más)?

Respuestas a la pregunta(2)

Su respuesta a la pregunta