lognormal_distribution (Clase)

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Genera una distribución log-normal.

class lognormal_distribution  
   {  
   public:  // types  
   typedef RealType result_type;  
   struct param_type;  // constructor and reset functions  
   explicit lognormal_distribution(RealType m = 0.0, RealType s = 1.0);
   explicit lognormal_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 m() const;
   RealType s() const;
   param_type param() const;
   void param(const param_type& parm);
   result_type min() const;
   result_type max() const;
   };  

Parámetros

RealType
Un tipo de resultado de punto flotante, el valor predeterminado es double. Para los tipos posibles, consulte <> </> > .

La clase de plantilla describe una distribución que produce valores de un tipo de entero especificado por el usuario o de tipo double si no se proporciona ninguno, distribuido según la distribución log-normal. La tabla siguiente incluye vínculos a artículos sobre miembros individuales.

lognormal_distribution::lognormal_distributionlognormal_distribution::mlognormal_distribution::param
lognormal_distribution::operator()lognormal_distribution::slognormal_distribution::param_type

Las funciones de propiedad m() y s() devuelven los valores para los parámetros de distribución almacenados m y s, respectivamente.

Para obtener más información acerca de las clases de distribución y sus miembros, vea <> </> > .

Para obtener información detallada acerca de la distribución logarítmico-normal, vea el artículo de Wolfram MathWorld distribución logarítmico-normal.

// compile with: /EHsc /W4  
#include <random>   
#include <iostream>  
#include <iomanip>  
#include <string>  
#include <map>  
  
using namespace std;  
  
void test(const double m, const double s, const int samples) {  
  
    // uncomment to use a non-deterministic seed  
    //    random_device gen;  
    //    mt19937 gen(rd());  
    mt19937 gen(1701);  
  
    lognormal_distribution<> distr(m, s);  
  
    cout << endl;  
    cout << "min() == " << distr.min() << endl;  
    cout << "max() == " << distr.max() << endl;  
    cout << "m() == " << fixed << setw(11) << setprecision(10) << distr.m() << endl;  
    cout << "s() == " << fixed << setw(11) << setprecision(10) << distr.s() << endl;  
  
    // generate the distribution as a histogram  
    map<double, int> histogram;  
    for (int i = 0; i < samples; ++i) {  
        ++histogram[distr(gen)];  
    }  
  
    // print results  
    cout << "Distribution for " << samples << " samples:" << endl;  
    int counter = 0;  
    for (const auto& elem : histogram) {  
        cout << fixed << setw(11) << ++counter << ": "  
            << setw(14) << setprecision(10) << elem.first << endl;  
    }  
    cout << endl;  
}  
  
int main()  
{  
    double m_dist = 1;  
    double s_dist = 1;  
    int samples = 10;  
  
    cout << "Use CTRL-Z to bypass data entry and run using default values." << endl;  
    cout << "Enter a floating point value for the 'm' distribution parameter: ";  
    cin >> m_dist;  
    cout << "Enter a floating point value for the 's' distribution parameter (must be greater than zero): ";  
    cin >> s_dist;  
    cout << "Enter an integer value for the sample count: ";  
    cin >> samples;  
  
    test(m_dist, s_dist, samples);  
}  
  

Use CTRL-Z to bypass data entry and run using default values.  
Enter a floating point value for the 'm' distribution parameter: 0  
Enter a floating point value for the 's' 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  
m() == 0.0000000000  
s() == 1.0000000000  
Distribution for 10 samples:  
    1: 0.3862809339  
    2: 0.4128865601  
    3: 0.4490576787  
    4: 0.4862035428  
    5: 0.5930607126  
    6: 0.8190778771  
    7: 0.8902379317  
    8: 2.8332911667  
    9: 5.1359445565  
    10: 5.4406507912  

Encabezado:<>>

Espacio de nombres: std

Construye la distribución.

explicit lognormal_distribution(RealType m = 0.0, RealType s = 1.0);

 
explicit lognormal_distribution(const param_type& parm);

Parámetros

m
El parámetro de distribución m.

s
El parámetro de distribución s.

parm
La estructura de parámetros utilizada para construir la distribución.

Comentarios

Condición previa:0.0 < s

El primer constructor crea un objeto cuyo valor m almacenado contiene el valor m y cuyo valor s almacenado contiene el valor s.

El segundo constructor crea un objeto cuyos parámetros almacenados se inicializan desde parm. Los parámetros actuales de una distribución existente se pueden obtener y definir llamando a la función miembro param().

Almacena los parámetros de la distribución.

struct param_type {  
   typedef lognormal_distribution<RealType> distribution_type;  
   param_type(RealType m = 0.0, RealType s = 1.0);
   RealType m() const;
   RealType s() const;
   .....  
   bool operator==(const param_type& right) const;
   bool operator!=(const param_type& right) const;
   };  

Parámetros

Consulte el tema primario lognormal_distribution (clase).

Comentarios

Condición previa:0.0 < s

Esta estructura se puede pasar al constructor de clases de la distribución en el momento de creación de instancias, a la función miembro param() para definir los parámetros almacenados de una distribución existente y a operator() para usarse en lugar de los parámetros almacenados.

<>>

Mostrar: