Devo usar um mecanismo aleatório semeado de std :: random_device ou usar std :: random_device toda vez

Eu tenho uma classe que contém duas fontes de aleatoriedade.

std::random_device rd;
std::mt19937 random_engine;

Eu semo ostd::mt19937 com uma chamada parastd::random_device. Se eu quiser gerar um número e não me importo com a repetibilidade, devo ligarrd() ourandom_engine()?

No meu caso particular, tenho certeza de que ambos funcionariam muito bem, porque isso será chamado em algum código de rede, em que o desempenho não é muito alto, e os resultados não são especialmente sensíveis. No entanto, estou interessado em algumas "regras gerais" sobre quando usar a entropia de hardware e quando usar números pseudo-aleatórios.

Atualmente, estou usando apenasstd::random_device semear meustd::mt19937 motor, e qualquer geração de números aleatórios que eu preciso para o meu programa, eu uso ostd::mt19937 motor.

edit: Aqui está uma explicação para exatamente o que estou usando este exemplo específico para:

Isto é para um programa de jogo. Este jogo particular permite que o usuário personalize seu 'time' antes de começar uma rodada contra um oponente. Parte da criação de uma batalha envolve o envio de uma equipe ao servidor. Meu programa tem várias equipes e usa o número aleatório para determinar qual equipe carregar. Cada nova batalha faz uma chamada parastd::random_device para semear o gerador de números pseudo-aleatórios. Eu registro o estado inicial da batalha, que inclui essa equipe que estou selecionando aleatoriamente e a semente inicial.

O número aleatório particular que estou perguntando nesta questão é para a seleção aleatória da equipe (onde é benéfico não ter o adversário sabendo de antemão qual time eu estou usando, mas não crítico), mas o que eu ' M realmente procurando é uma regra de ouro. Tudo bem usar semprestd::random_device se eu não precisar de repetibilidade dos meus números, ou há um risco real de usar entropia mais rápido do que pode ser coletado?

questionAnswers(6)

yourAnswerToTheQuestion