Udostępnij za pośrednictwem


extreme_value_distribution — Klasa

Generuje dystrybucji extreme wartość.

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

Parametry

  • RealType
    Typ wyniku zmiennoprzecinkowych, wartość domyślna to double.Dla typów możliwych, zobacz <random>.

Uwagi

Klasa szablonu opisuje dystrybucji, tworzącego wartości Całka określony przez użytkownika typu lub typu double Jeśli nie zostanie podana, rozdzielonych Extreme dystrybucji wartość.Poniższe łącza tabeli do artykułów dotyczących poszczególnych elementów.

extreme_value_distribution::extreme_value_distribution

extreme_value_distribution::a

extreme_value_distribution::param

extreme_value_distribution::operator()

extreme_value_distribution::b

extreme_value_distribution::param_type

Funkcje właściwości a() i b() zwrócić odpowiadających im wartości dla parametrów przechowywanych dystrybucji a i b.

Aby uzyskać więcej informacji na temat klasy dystrybucji i ich elementy członkowskie zobacz <random>.

Aby uzyskać szczegółowe informacje dotyczące dystrybucji extreme wartości, zobacz artykuł Wolfram MathWorld Extreme dystrybucji wartość.

Przykład

 

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

Dane wyjściowe

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

Wymagania

Nagłówek: < losowe >

Przestrzeń nazw: std

Zobacz też

Informacje

<random>