linear_congruential_engine (Clase)

 

Publicado: octubre de 2016

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

Genera una secuencia aleatoria mediante un algoritmo congruencial lineal.

class linear_congruential_engine{  
   public:  // types  
   typedef UIntType result_type;  
   // engine characteristics  
   static constexpr result_type multiplier = a;  
   static constexpr result_type increment = c;  
   static constexpr result_type modulus = m;  
   static constexpr result_type min() { return c == 0u  1u: 0u; }  
   static constexpr result_type max() { return m - 1u; }  
   static constexpr result_type default_seed = 1u;  
   // constructors and seeding functions  
   explicit linear_congruential_engine(result_type s = default_seed);
   template <class Sseq>  
   explicit linear_congruential_engine(Sseq& q);
   void seed(result_type s = default_seed);
   template <class Sseq>  
   void seed(Sseq& q);
   // generating functions  
   result_type operator()();
   void discard(unsigned long long z);
   };  

Parámetros

UIntType
El tipo de resultado integral sin signo. Para los tipos posibles, consulte <> </> > .

A
Multiplicador. Condición previa: sección Vea comentarios.

C
Incremento. Condición previa: sección Vea comentarios.

M
Módulo. Condición previa: vea la sección Comentarios.

linear_congruential_engine::linear_congruential_enginelinear_congruential_engine::minlinear_congruential_engine::discard
linear_congruential_engine::operator()linear_congruential_engine::maxlinear_congruential_engine::seed

default_seed es un miembro constante, definido como 1u, utilizado como el valor de parámetro predeterminado para linear_congruential_engine::seed y el constructor de valores simple.

Para obtener más información acerca de los miembros del motor, consulte <> </> > .

La clase de plantilla linear_congruential_engine es el motor de generador más sencillo, pero no el más rápido ni de mejor calidad. Una mejora con respecto a este motor es el motor de resta llevando. Ninguno de estos motores es tan rápido o con los resultados de alta calidad que el mersenne_twister_engine.

Este motor genera valores de un usuario especificado tipo integral sin signo mediante la relación de repetición ( punto) x(i) = (A * x(i-1) + C) mod M.

Si M es cero, el valor usado en esta operación de módulo es numeric_limits<result_type>::max() + 1. El estado del motor es el último valor devuelto, o bien el valor de inicialización si no se ha llamado a operator().

Si M no es cero, los valores de los argumentos de plantilla A y C deben ser inferiores a M.

Aunque puede construir directamente un generador de este motor, también puede utilizar una de estas definiciones de tipos predefinidos.

minstd_rand0: motor estándar mínimo 1988 (Lewis, Goodman y Miller, 1969).

typedef linear_congruential_engine<unsigned int, 16807, 0, 2147483647> minstd_rand0;  

minstd_rand: Actualizada motor estándar mínimo minstd_rand0 (Park, Miller y Stockmeyer, 1993).

typedef linear_congruential_engine<unsigned int, 48271, 0, 2147483647> minstd_rand;  

Para obtener información detallada acerca del algoritmo de motor congruencial lineal, vea el artículo de la Wikipedia generador congruencial lineal.

Encabezado:<>>

Espacio de nombres: std

<>>

Mostrar: