Kelas linear_congruential_engine
Menghasilkan urutan acak oleh algoritma kongruential linier.
Sintaks
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);
};
Parameter
UIntType
Tipe hasil bilangan bulat yang tidak ditandatangani. Untuk jenis yang mungkin, lihat acak>.<
A
Pengali. Prasyarat: Lihat bagian Keterangan.
C
Kenaikan. Prasyarat: Lihat bagian Keterangan.
M
Modulus. Prasyarat: Lihat komentar.
Anggota
linear_congruential_engine::linear_congruential_engine
linear_congruential_engine::discard
linear_congruential_engine::max
linear_congruential_engine::min
linear_congruential_engine::operator()
linear_congruential_engine::seed
default_seed
adalah konstanta anggota, yang didefinisikan sebagai 1u
, digunakan sebagai nilai parameter default untuk linear_congruential_engine::seed
dan konstruktor nilai tunggal.
Untuk informasi selengkapnya tentang anggota mesin, lihat acak>.<
Keterangan
Templat linear_congruential_engine
kelas adalah mesin generator paling sederhana, tetapi bukan kualitas tercepat atau tertinggi. Peningkatan pada mesin ini adalah substract_with_carry_engine. Tidak satu pun dari mesin ini secepat atau dengan hasil berkualitas tinggi seperti mersenne_twister_engine.
Mesin ini menghasilkan nilai jenis integral yang tidak ditandatangani pengguna menggunakan relasi pengulangan ( periode) x(i) = (A * x(i-1) + C) mod M
.
Jika M nol, nilai yang digunakan untuk operasi modulus ini adalah numeric_limits<result_type>::max() + 1
. Status mesin adalah nilai terakhir yang dikembalikan, atau nilai seed jika tidak ada panggilan yang dilakukan ke operator()
.
Jika M bukan nol, nilai argumen templat A dan C harus kurang dari M.
Meskipun Anda dapat membuat generator dari mesin ini secara langsung, Anda juga dapat menggunakan salah satu typedef yang telah ditentukan sebelumnya ini.
minstd_rand0
: 1988 mesin standar minimal (Lewis, Goodman, dan Miller, 1969).
typedef linear_congruential_engine<unsigned int, 16807, 0, 2147483647> minstd_rand0;
minstd_rand
: Diperbarui mesin minstd_rand0
standar minimal (Park, Miller, dan Stockmeyer, 1993).
typedef linear_congruential_engine<unsigned int, 48271, 0, 2147483647> minstd_rand;
Untuk informasi terperinci tentang algoritma mesin congruential linear, lihat artikel Wikipedia Generator kongruential linear.
Persyaratan
Header:<acak>
Namespace: std