Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Gera uma distribuição qui-quadrada.
Sintaxe
template<class RealType = double>
class chi_squared_distribution {
public:
// types
typedef RealType result_type;
struct param_type;
// constructor and reset functions
explicit chi_squared_distribution(RealType n = 1);
explicit chi_squared_distribution(const param_type& parm);
void reset();
// generating functions
template <class URNG>
result_type operator()(URNG& gen);
template <class URNG>
result_type operator()(URNG& gen, const param_type& parm);
// property functions
RealType n() const;
param_type param() const;
void param(const param_type& parm);
result_type min() const;
result_type max() const;
};
Parâmetros
RealType
O tipo de resultado de ponto flutuante assume double como padrão. Para encontrar os tipos possíveis, confira <random>.
URNG
O mecanismo gerador de números aleatórios uniformes. Para encontrar os tipos possíveis, confira <random>.
Comentários
O modelo de classe descreve uma distribuição que produz valores de um tipo de ponto flutuante especificado pelo usuário ou de um tipo double, caso nenhum seja fornecido, distribuído de acordo com a Distribuição Qui-Quadrado. A tabela a seguir contém links para artigos sobre cada um dos membros.
chi_squared_distribution
param_type
A função de propriedade n() retorna o valor para o parâmetro de distribuição armazenado n.
O membro da propriedade param() define ou retorna o pacote de parâmetros de distribuição armazenado param_type.
As funções membro min() e max() retornam o menor resultado possível e o maior resultado possível, respectivamente.
A função membro reset() descarta qualquer valor armazenado em cache, de forma que o resultado da próxima chamada para operator() não dependerá dos valores obtidos do mecanismo antes da chamada.
As funções membro operator() retornam o próximo valor gerado com base no mecanismo URNG, do pacote de parâmetros atual ou do pacote de parâmetros especificado.
Para obter mais informações sobre as classes de distribuição e seus membros, confira <random>.
Para obter informações detalhadas sobre a distribuição qui-quadrado, consulte o artigo Geometric Distribution (Distribuição geométrica) da Wolfram MathWorld.
Exemplo
// compile with: /EHsc /W4
#include <random>
#include <iostream>
#include <iomanip>
#include <string>
#include <map>
void test(const double n, const int s) {
// uncomment to use a non-deterministic generator
// std::random_device gen;
std::mt19937 gen(1701);
std::chi_squared_distribution<> distr(n);
std::cout << std::endl;
std::cout << "min() == " << distr.min() << std::endl;
std::cout << "max() == " << distr.max() << std::endl;
std::cout << "n() == " << std::fixed << std::setw(11) << std::setprecision(10) << distr.n() << std::endl;
// generate the distribution as a histogram
std::map<double, int> histogram;
for (int i = 0; i < s; ++i) {
++histogram[distr(gen)];
}
// print results
std::cout << "Distribution for " << s << " samples:" << std::endl;
int counter = 0;
for (const auto& elem : histogram) {
std::cout << std::fixed << std::setw(11) << ++counter << ": "
<< std::setw(14) << std::setprecision(10) << elem.first << std::endl;
}
std::cout << std::endl;
}
int main()
{
double n_dist = 0.5;
int samples = 10;
std::cout << "Use CTRL-Z to bypass data entry and run using default values." << std::endl;
std::cout << "Enter a floating point value for the \'n\' distribution parameter (must be greater than zero): ";
std::cin >> n_dist;
std::cout << "Enter an integer value for the sample count: ";
std::cin >> samples;
test(n_dist, samples);
}
Primeira execução:
Use CTRL-Z to bypass data entry and run using default values.
Enter a floating point value for the 'n' distribution parameter (must be greater than zero): .5
Enter an integer value for the sample count: 10
min() == 4.94066e-324
max() == 1.79769e+308
n() == 0.5000000000
Distribution for 10 samples:
1: 0.0007625595
2: 0.0016895062
3: 0.0058683478
4: 0.0189647765
5: 0.0556619371
6: 0.1448191353
7: 0.1448245325
8: 0.1903494379
9: 0.9267525768
10: 1.5429743723
Segunda execução:
Use CTRL-Z to bypass data entry and run using default values.
Enter a floating point value for the 'n' distribution parameter (must be greater than zero): .3333
Enter an integer value for the sample count: 10
min() == 4.94066e-324
max() == 1.79769e+308
n() == 0.3333000000
Distribution for 10 samples:
1: 0.0000148725
2: 0.0000490528
3: 0.0003175988
4: 0.0018454535
5: 0.0092808795
6: 0.0389540735
7: 0.0389562514
8: 0.0587028468
9: 0.6183666639
10: 1.3552086624
Terceira execução:
Use CTRL-Z to bypass data entry and run using default values.
Enter a floating point value for the 'n' distribution parameter (must be greater than zero): 1000
Enter an integer value for the sample count: 10
min() == 4.94066e-324
max() == 1.79769e+308
n() == 1000.0000000000
Distribution for 10 samples:
1: 958.5284624473
2: 958.7882787809
3: 963.0667684792
4: 987.9638091514
5: 1016.2433493745
6: 1021.9337111110
7: 1021.9723046240
8: 1035.7622110505
9: 1043.8725156645
10: 1054.7051509381
Requisitos
Cabeçalho:<random>
Namespace: std
chi_squared_distribution::chi_squared_distribution
Constrói a distribuição.
explicit chi_squared_distribution(result_type n = 1.0);
explicit chi_squared_distribution(const param_type& parm);
Parâmetros
n
O parâmetro de distribuição n.
parm
A estrutura do parâmetro usada para construir a distribuição.
Comentários
Pré-condição: 0.0 < n
O primeiro construtor constrói um objeto cujo valor n armazenado contém o valor n.
O segundo construtor cria um objeto cujos parâmetros armazenados são inicializados de parm. Você pode chamar a função de membro param() para obter e definir os parâmetros atuais de uma distribuição existente.
chi_squared_distribution::param_type
Armazena os parâmetros da distribuição.
struct param_type {
typedef chi_squared_distribution<result_type> distribution_type;
param_type(result_type n = 1.0);
result_type n() const;
bool operator==(const param_type& right) const;
bool operator!=(const param_type& right) const;
};
Parâmetros
n
O parâmetro de distribuição n.
direita
O objeto param_type a ser comparado a este.
Comentários
Pré-condição: 0.0 < n
Essa estrutura pode ser enviada ao construtor de classe de distribuição na instanciação, para a função de membro param() para definir os parâmetros armazenados de uma distribuição existente e para operator() a ser usado no lugar dos parâmetros armazenados.