home | help
std::linear...ntial_engine(3)  C++ Standard Libary std::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 un-
     defined 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) = (aA.x
	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) = (aA.x
	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 generated
     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)

home | help