As distribuições aleatórias devem ser passadas por referência ou ser membros de objetos em c ++

Supondo que instanciamos apenas menos de 20 objetos da classe Blob e com relação a problemas de eficiência (execução de tempo) e gerenciamento de memória, existe uma melhor opção entre:

Configurando o gerador aleatório e as distribuições geradas como membros da classe privada, como:

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

e usá-los diretamente nos métodos Blob. Assim, quando chamamos uma distribuição, também alteramos o estado do mecanismo que é um membro.

Ou definindo o gerador aleatório como um membro da classe privada e passando as distribuições por referência aos métodos? Por exemplo:

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

Embora a passagem por referência induza despesas gerais mais baixas em geral, isso importa nesse caso em particular? Como a pergunta geral é escalada ao chamar as distribuições um grande número de vezes (10 ^ 9 ou mais)?

questionAnswers(2)

yourAnswerToTheQuestion