Share via


subtract_with_carry_engine Class

Genera una secuencia aleatoria por el restar con contienen el algoritmo.

template<class UIntType,
    int W, int S, int R>
    class subtract_with_carry_engine {
public:
    typedef UIntType result_type;
    static const int word_size = W;
    static const int short_lag = S;
    static const int long_lag = R;
    static const UIntType default_seed = 19780503U;
    explicit subtract_with_carry_engine(UIntType x0 = default_seed);
    explicit subtract_with_carry_engine(seed_seq& seq);
    void seed(UIntType x0 = default_seed);
    void seed(seed_seq& seq);
    static const result_type min();
    static const result_type max();
    result_type operator()();
    void discard(unsigned long long count)();
    };

Parámetros

  • UIntType
    el tipo de resultado entero.

  • W
    El parámetro del motor de m.

  • S
    El parámetro del motor de s.

  • R
    El parámetro del motor de r.

Comentarios

La clase de plantilla describe motor simple que genera valores de entero sin signo definido por el usuario escribe utilizando la relación de frecuencia x(i) = (x(i - R) - x(i - S) - cy(i - 1)) mod M, donde cy(i) tiene el valor 1 si x(i - S) - x(i - R) - cy(i - 1) < 0, si no 0, y M tiene el valor 2W.(Observe que el parámetro W de plantilla aquí reemplaza el parámetro M de plantilla para subtract_with_carry.) El estado del motor es un indicador de tardar varios valores de R .Estos valores se componen de los valores de R el último devueltos si operator() se ha llamado al menos los tiempos de R , si no los valores de N se han devuelto y valores pasados de R - N seed.

El argumento UIntType template debería ser lo bastante grande para contener valores hasta M - 1.Los valores de los argumentos S y R de plantilla deben ser mayores que 0 y S debe ser menor que R.

Requisitos

encabezado: <aleatorio>

espacio de nombres: std

Vea también

Referencia

<random>

subtract_with_carry_engine::discard

subtract_with_carry_engine::operator()

subtract_with_carry_engine::seed

subtract_with_carry_engine::subtract_with_carry_engine