Bagikan melalui


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

Lihat juga

<random>