Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::linear...ntial_engine(3) C++ Standard Libarystd::linear...ntial_engine(3)

NAME
       std::linear_congruential_engine - std::linear_congruential_engine

Synopsis
	  Defined in header <random>
	  template<

	      class UIntType,
	      UIntType a,		       (since C++11)
	      UIntType c,
	      UIntType m

	  > class linear_congruential_engine;

	  linear_congruential_engine is	a random number	engine based on	Linear
       congruential
	  generator (LCG).

Template parameters
		     The result	type generated by the generator. The effect is
       undefined if
	  UIntType - this is not one of	unsigned short,	unsigned int, unsigned
       long, or
		     unsigned long long.
	  a	   - the multiplier term
	  c	   - the increment term
	  m	   - the modulus term

	  When m is not	zero, if a >= m	or c >=	m is true, the program is ill-
       formed.

	  Generator properties

	  The  size  of	the states of linear_congruential_engine is 1, each of
       them consists of
	  a single integer.

	  The actual modulus \(m_0\)m
	  0 is defined as follows:

	    * If m is not zero,	\(m_0\)m
	      0	is m.
	    * If m is zero, \(m_0\)m
	      0	is the value of	std::numeric_limits<result_type>::max()	plus 1
       (which means
	      \(m_0\)m
	      0	need not be representable as result_type).

	  The transition algorithm of linear_congruential_engine is  \(TA(x_i)
       = (a \cdot x_i +
	  c)\mod m_0\)TA(x
	  i) = (ax
	  i+c) mod m
	  0.

	  The  generation algorithm of linear_congruential_engine is \(GA(x_i)
       = (a \cdot x_i +
	  c)\mod m_0\)GA(x
	  i) = (ax
	  i+c) mod m
	  0.

	  The pseudo-random number generated with the current  state  is  also
       the successor
	  state.

	  Predefined specializations

	  The  following  specializations define the random number engine with
       two commonly used
	  parameter sets:

	  Defined in header <random>
	  Type	       Definition
		       std::linear_congruential_engine<std::uint_fast32_t,
	  minstd_rand0				       16807, 0, 2147483647>
	  (C++11)
		       Discovered  in  1969  by	 Lewis,	 Goodman  and  Miller,
       adopted as "Minimal
		       standard" in 1988 by Park and Miller
		       std::linear_congruential_engine<std::uint_fast32_t,
	  minstd_rand				       48271, 0, 2147483647>
	  (C++11)	Newer "Minimum standard", recommended by Park, Miller,
       and Stockmeyer
		       in 1993

	  Nested types

	  Type	      Definition
	  result_type UIntType

	  Data members

	  constexpr UIntType multiplier	  a
	  [static]			  (public static member	constant)
	  constexpr UIntType increment	  c
	  [static]			  (public static member	constant)
	  constexpr UIntType modulus	  m
	  [static]			  (public static member	constant)
	  constexpr UIntType default_seed 1u
	  [static]			  (public static member	constant)

Member functions
Construction and Seeding
	  constructor	   constructs the engine
	  (C++11)	   (public member function)
	  seed		   sets	the current state of the engine
	  (C++11)	   (public member function)

Generation
	  operator()	   advances the	engine's state and returns the	gener-
       ated value
	  (C++11)	   (public member function)
	  discard	   advances the	engine's state by a specified amount
	  (C++11)	   (public member function)

Characteristics
	  min		    gets  the  smallest	 possible  value in the	output
       range
	  [static] (C++11) (public static member function)
	  max		   gets	the largest possible value in the output range
	  [static] (C++11) (public static member function)

Non-member functions
	  operator==		     compares  the  internal  states  of   two
       pseudo-random number
	  operator!=		    engines
	  (C++11)		    (function)
	  (C++11)(removed in C++20)
	  operator<<		      performs	stream	input  and  output  on
       pseudo-random number
	  operator>>		    engine
	  (C++11)		    (function template)

Example
	   This	section	is incomplete
	   Reason: no example

Category:
	    * Todo no example

http://cppreference.com		  2024.06.10	 std::linear...ntial_engine(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::linear_congruential_engine&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help