Partilhar via


<random>

Define vários geradores de números aleatórios.

#include <random>

Comentários

A gerador de números aleatórios é um objeto que produz uma seqüência de valores pseudo-aleatória.Um gerador produz valores uniformemente distribuídos em um intervalo especificado é um engine.Um mecanismo pode ser combinado com um distribuição, ou passando o mecanismo como um argumento para a distribuição operator() ou usando um variate_generator Class, para produzir valores que são distribuídas de maneira que é definida pela distribuição.

A maioria dos geradores de números aleatórios é modelos cujos parâmetros de personalizar o gerador.As descrições dos geradores de levar um tipo como um argumento usam nomes de parâmetro de modelo comuns para descrever as propriedades do tipo permitidas como um tipo de argumento real, como segue:

  • IntTypeindica um tipo integral assinado ou não assinado.

  • UIntTypeindica um tipo integral não assinado.

  • RealTypeindica um tipo de ponto flutuante.

Um mecanismo é uma classe de modelo ou TR1 classe cujas instâncias atuam como origem de números aleatórios distribuídos uniformemente entre um valor mínimo e máximo.Um mecanismo pode ser uma mecanismo simple ou mecanismo composto.Cada mecanismo tem os seguintes membros:

  • typedef numeric-type result_typeé o tipo retornado pelo gerador operator().

  • result_type min()Retorna o valor mínimo é retornado pelo gerador operator().

  • result_type max()Retorna o valor máximo é retornado pelo gerador operator().Quando result_type é um tipo integral é o valor máximo que pode realmente ser retornado; Quando result_type é um tipo de ponto flutuante, este é o menor valor maior do que todos os valores que podem ser retornados.

  • void seed()O função semente inicializa o mecanismo com valores padrão de propagação.

  • template <class InIt> void seed(InIt& first, InIt last)A função de propagação propaga o mecanismo usando valores do tipo unsigned long da seqüência de half open é apontada por [first, last).Se a seqüência não for longa o suficiente para inicializar totalmente o mecanismo, a função armazena o valor last em first e lança um objeto do tipo std::invalid_argument.

    ObservaçãoObservação

    Apenas os mecanismos mantidos para compatibilidade de TR1 incluir esse membro.

  • result_type operator()()Retorna os valores são distribuídos uniformemente entre min() e max().

min, max, e result_type não são descritos em detalhes para os mecanismos que seguem.

Começando com Visual Studio 2010, cada mecanismo, exceto aqueles mantidos para compatibilidade de TR1 também inclui os seguintes membros:

  • Um construtor com argumento explícito result_type x0 que cria um mecanismo propagado como se chamando seed(x0).

  • Um construtor com argumento explícito seed_seq& seq que cria um mecanismo propagado como se chamando seed(seq).

  • void seed(result_type x0)A função de propagação propaga o mecanismo com valor semente x0.

  • void seed(seed_seq& seq)A função de propagação propaga o mecanismo com valores de propagação do seq.

  • void discard(unsigned long long count)efetivamente chama operator() tempos de contagem e descarta cada valor.

Cada mecanismo tem um estado que determina a seqüência de valores que serão gerados por chamadas subseqüentes para operator().Os estados de dois objetos do mesmo tipo podem ser comparados usando operator== e operator!=.Se os dois estados são comparados como iguais, os objetos irá gerar a mesma seqüência de valores.O estado de um objeto pode ser salvos em um fluxo como uma seqüência de valores não assinados de 32 bits usando o operator<< do objeto.O estado não é alterado, salvando-o.Um estado salvo pode ser lido em um objeto do mesmo tipo usando operator>>.

A mecanismo simple é um mecanismo que gera números aleatórios diretamente.Esta biblioteca fornece uma classe cujos objetos são mecanismos simples.Ele também oferece quatro modelos de classe que podem ser instanciados usando valores fornecem parâmetros para o algoritmo de implementação e nove predefinidas instâncias desses modelos de classe.Objetos desses tipos também são mecanismos simples.

A mecanismo composto é um mecanismo que obtém números aleatórios de um ou mais simples mecanismos e gera um fluxo de números aleatórios uniformemente distribuídos usando esses valores.Esta biblioteca fornece modelos de classe para dois mecanismos compostos.

A distribuição é uma classe de TR1 ou classe de modelo cujas instâncias transform um fluxo de números aleatórios uniformemente distribuídos obtidos de um mecanismo em um fluxo de números aleatórios que têm uma distribuição específica.Cada distribuição possui os seguintes membros:

  • typedef numeric-type input_typeé o tipo que deve ser retornado pelo mecanismo do passado para operator().

  • typedef numeric-type result_typeé o tipo retornado pela distribuição operator().

  • void reset()descarta quaisquer valores armazenados em cache para que o resultado da próxima chamada de operator() não depende dos valores obtidos do mecanismo antes da chamada.

  • template <class Engine> result_type operator()(Engine& eng)Retorna os valores são distribuídos de acordo com a definição da distribuição, usando eng como uma fonte de valores aleatórios uniformemente distribuídos e o armazenado pacote de parâmetro.

input_type, result_type, e reset não são descritos em detalhes para as distribuições que seguem.

Começando com Visual Studio 2010, cada distribuição também tem:

  • typedef unspecified-type param_typeo pacote de parâmetros é passado para operator() para gerar o valor de retorno.

  • A const param& construtor inicializa o pacote de parâmetro armazenados do seu argumento.

  • param_type param() constObtém o pacote de parâmetro armazenados.

  • void param(const param_type&)Define o pacote de parâmetro armazenados de seu argumento.

  • template <class Engine> result_type operator()(Engine& eng, param_type par0)Retorna valores distribuídos de acordo com definição da distribuição, usando eng como uma origem de valores aleatórios uniformemente distribuídos e o pacote do parâmetro par0.

Um pacote de parâmetro é um objeto que armazena todos os parâmetros necessários para uma distribuição.Contém:

  • typedef distribution-type distribution_typeé o tipo de sua distribuição.

  • Um ou mais construtores que utilizam o mesmo parâmetro de lista como o take de construtores de distribuição.

  • O mesmo parâmetro de acesso funciona como a distribuição.

  • Operadores de comparação de igualdade e desigualdade.

A biblioteca pode ser construída como uma versão verificada e uma versão não-verificada.A versão verificada usa uma macro similar do c assert macro para testar as condições marcadas como Precondition nas descrições funcionais.Para usar a versão verificada, defina tanto a macro _RNG_CHECK ou a macro _DEBUG para um valor de numérico de zero em todo o código que usa a biblioteca.

Bb982398.collapse_all(pt-br,VS.110).gifClasses

bernoulli_distribution Class

Gera uma distribuição de Bernoulli.

binomial_distribution Class

Gera uma distribuição binomial.

cauchy_distribution Class

Gera uma distribuição de Cauchy.

chi_squared_distribution Class

Gera uma distribuição qui-quadrada.

discard_block Class

Gera uma seqüência aleatória descartando valores retornados pelo seu mecanismo de base.Mantido para compatibilidade de TR1.

discard_block_engine Class

Gera uma seqüência aleatória descartando valores retornados pelo seu mecanismo de base.

discrete_distribution Class

Gera uma distribuição discreta inteiro.

exponential_distribution Class

Gera uma distribuição exponencial.

extreme_value_distribution Class

Gera uma distribuição do valor extremo.

fisher_f_distribution Class

Gera uma distribuição f de Fisher.

gamma_distribution Class

Gera uma distribuição gama.

geometric_distribution Class

Gera uma distribuição geométrica.

independent_bits_engine Class

Gera uma seqüência aleatória com um número de bits especificado pelo repacking bits de valores retornados pelo seu mecanismo de base.

linear_congruential Class

Gera uma seqüência aleatória usando o algoritmo congruential linear.Mantido para compatibilidade de TR1.

linear_congruential_engine Class

Gera uma seqüência aleatória usando o algoritmo congruential linear.

lognormal_distribution Class

Gera uma distribuição log-normal.

mersenne_twister Class

Gera uma seqüência aleatória usando o algoritmo de twister da Mersenne.Mantido para compatibilidade de TR1.

mersenne_twister_engine Class

Gera uma seqüência aleatória usando o algoritmo de twister da Mersenne.

negative_binomial_distribution Class

Gera uma distribuição binomial negativa.

normal_distribution Class

Gera uma distribuição normal.

piecewise_constant_distribution Class

Gera um piecewise distribuição constante.

piecewise_linear_distribution Class

Gera um piecewise distribuição linear.

poisson_distribution Class

Gera uma distribuição Poisson.

random_device Class

Gera uma seqüência aleatória usando um dispositivo externo.

seed_seq Class

Armazena um vetor de inteiros não assinados pode fornecer uma semente aleatório para um mecanismo de número aleatório.

shuffle_order_engine Class

Gera uma seqüência aleatória reordenar os valores retornados de seu mecanismo de base.

student_t_distribution Class

Gera uma distribuição t de Student.

subtract_with_carry Class

Gera uma seqüência aleatória, usando a subtração com algoritmo de balcão.Mantido para compatibilidade de TR1.

subtract_with_carry_01 Class

Gera um aleatório seqüência usando o ponto flutuante subtrair com algoritmo de balcão.Mantido para compatibilidade de TR1.

subtract_with_carry_engine Class

Gera uma seqüência aleatória, usando a subtração com algoritmo de balcão.

uniform_int Class

Gera uma distribuição uniforme inteiro.Mantido para compatibilidade de TR1.

uniform_int_distribution Class

Gera uma distribuição uniforme inteiro.

uniform_real Class

Gera uma distribuição uniforme de ponto flutuante.Mantido para compatibilidade de TR1.

uniform_real_distribution Class

Gera uma distribuição uniforme de ponto flutuante.

variate_generator Class

Quebra um mecanismo e uma distribuição.

weibull_distribution Class

Gera uma distribuição Weibull.

xor_combine Class

Gera uma distribuição combinada.

Bb982398.collapse_all(pt-br,VS.110).gifTypedefs

default_random_engine TypeDef

Digite a definição para o mecanismo padrão.

knuth_b TypeDef

Digite a definição para um mecanismo de ordem aleatória.

minstd_rand0 TypeDef

Digite a definição para um mecanismo congruential linear.

minstd_rand TypeDef

Digite a definição para um mecanismo congruential linear.

mt19937 TypeDef

Digite a definição para um mecanismo de twister da Mersenne.

mt19937_64 TypeDef

Digite a definição para um mecanismo de twister da Mersenne.

ranlux_base_01 TypeDef

Definição de tipo para um ponto flutuante subtrair com mecanismo de balcão.

ranlux3 TypeDef

Definição de tipo para uma subtração com executar o mecanismo.

ranlux3_01 TypeDef

Definição de tipo para um ponto flutuante subtrair com mecanismo de balcão.

ranlux4 TypeDef

Definição de tipo para uma subtração com executar o mecanismo.

ranlux4_01 TypeDef

Definição de tipo para um ponto flutuante subtrair com mecanismo de balcão.

ranlux24 TypeDef

Digite a definição para um mecanismo de bloqueio de descarte.

ranlux24_base TypeDef

Definição de tipo para uma subtração com executar o mecanismo.

ranlux48 TypeDef

Digite a definição para um mecanismo de bloqueio de descarte.

ranlux48_base TypeDef

Definição de tipo para uma subtração com executar o mecanismo.

ranlux64_base_01 TypeDef

Definição de tipo para um ponto flutuante subtrair com mecanismo de balcão.

Bb982398.collapse_all(pt-br,VS.110).gifOperadores

operator== <random>

Testes se o mecanismo do lado esquerdo do operador é igual ao mecanismo do lado direito.

operator!= <random>

Testes se o mecanismo do lado esquerdo do operador não é igual a do motor do lado direito.

operator<< <random>

Grava informações de estado no fluxo.

operator>> <random>

Extrai informações de estado de um fluxo.

Bb982398.collapse_all(pt-br,VS.110).gifFunções

generate_canonical

Retorna um valor de ponto flutuante de uma seqüência aleatória.