extreme_value_distribution 클래스
극단값 분포를 생성합니다.
template<class RealType = double> class extreme_value_distribution { public: // types typedef RealType result_type; struct param_type; // constructor and reset functions explicit extreme_value_distribution(RealType a = 0.0, RealType b = 1.0); explicit extreme_value_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 a() const; RealType b() const; param_type param() const; void param(const param_type& parm); result_type min() const; result_type max() const; };
매개 변수
- RealType
부동 소수점 결과 형식으로, 기본적으로 double로 지정되어 있습니다. 가능한 형식은 <random>을 참조하세요.
설명
극단값 분포에 따라 분포된 경우 템플릿 클래스는 사용자 지정 정수 형식 또는 아무 것도 제공되지 않았다면 double 형식의 값을 생성하는 분포를 설명합니다. 다음 테이블은 개별 멤버에 대한 문서와 연결되어 있습니다.
extreme_value_distribution::a |
extreme_value_distribution::param |
|
extreme_value_distribution::operator() |
extreme_value_distribution::b |
속성 함수 a() 및 b()는 저장된 분포 매개 변수인 a 및 b 각각에 대한 값을 반환합니다.
분포 클래스 및 이러한 클래스의 멤버에 대한 자세한 내용은 <random>을 참조하세요.
극단값 분포에 대한 자세한 내용은 Wolfram MathWorld 문서 극단값 분포를 참조하세요.
예제
// compile with: /EHsc /W4
#include <random>
#include <iostream>
#include <iomanip>
#include <string>
#include <map>
void test(const double a, const double b, const int s) {
// uncomment to use a non-deterministic generator
// std::random_device gen;
std::mt19937 gen(1701);
std::extreme_value_distribution<> distr(a, b);
std::cout << std::endl;
std::cout << "min() == " << distr.min() << std::endl;
std::cout << "max() == " << distr.max() << std::endl;
std::cout << "a() == " << std::fixed << std::setw(11) << std::setprecision(10) << distr.a() << std::endl;
std::cout << "b() == " << std::fixed << std::setw(11) << std::setprecision(10) << distr.b() << 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 a_dist = 0.0;
double b_dist = 1;
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 \'a\' distribution parameter: ";
std::cin >> a_dist;
std::cout << "Enter a floating point value for the \'b\' distribution parameter (must be greater than zero): ";
std::cin >> b_dist;
std::cout << "Enter an integer value for the sample count: ";
std::cin >> samples;
test(a_dist, b_dist, samples);
}
출력
Use CTRL-Z to bypass data entry and run using default values.
Enter a floating point value for the 'a' distribution parameter: 0
Enter a floating point value for the 'b' distribution parameter (must be greater than zero): 1
Enter an integer value for the sample count: 10
min() == -1.79769e+308
max() == 1.79769e+308
a() == 0.0000000000
b() == 1.0000000000
Distribution for 10 samples:
1: -0.8813940331
2: -0.7698972281
3: 0.2951258007
4: 0.3110450734
5: 0.4210546820
6: 0.4210688771
7: 0.4598857960
8: 1.3155194200
9: 1.5379170046
10: 2.0568757061
요구 사항
헤더: <random>
네임스페이스: std