Kelas subtract_with_carry_engine
Menghasilkan urutan acak dengan algoritma subtract-with-carry (Lagged Fibonacci).
Sintaks
template <class UIntType, size_t W, size_t S, size_t R>
class subtract_with_carry_engine;
Parameter
UIntType
Tipe hasil bilangan bulat yang tidak ditandatangani. Untuk jenis yang mungkin, lihat acak>.<
W
Ukuran kata. Ukuran setiap kata, dalam bit, dari urutan status. Prasyarat: 0 < W ≤ numeric_limits<UIntType>::digits
S
Jeda pendek. Jumlah nilai bilangan bulat. Prasyarat: 0 < S < R
R
Jeda panjang. Menentukan pengulangan dalam seri yang dihasilkan.
Anggota
subtract_with_carry_engine::subtract_with_carry_engine
subtract_with_carry_engine::max
subtract_with_carry_engine::min
subtract_with_carry_engine::discard
subtract_with_carry_engine::operator()
subtract_with_carry_engine::seed
default_seed
adalah konstanta anggota, yang didefinisikan sebagai 19780503u
, digunakan sebagai nilai parameter default untuk subtract_with_carry_engine::seed
dan konstruktor nilai tunggal.
Untuk informasi selengkapnya tentang anggota mesin, lihat acak>.<
Keterangan
substract_with_carry_engine
Templat kelas adalah peningkatan atas linear_congruential_engine. Tidak untuk 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) , di mana cy(i)
memiliki nilai 1
jika x(i - S) - x(i - R) - cy(i - 1) < 0
, jika tidak0
, dan M
memiliki nilai 2
W. x(i) = (x(i - R) - x(i - S) - cy(i - 1)) mod M
Status mesin adalah indikator carry ditambah nilai R. Nilai-nilai ini terdiri dari nilai R terakhir yang dikembalikan jika operator()
telah dipanggil setidaknya R kali, jika tidakN
, nilai yang telah dikembalikan dan nilai terakhir R - N
dari seed.
Argumen UIntType
templat harus cukup besar untuk menyimpan nilai hingga M - 1
.
Meskipun Anda dapat membuat generator dari mesin ini secara langsung, Anda juga dapat menggunakan salah satu typedef yang telah ditentukan sebelumnya ini:
ranlux24_base
: Digunakan sebagai basis untuk ranlux24
.
typedef subtract_with_carry_engine<unsigned int, 24, 10, 24> ranlux24_base;
ranlux48_base
: Digunakan sebagai basis untuk ranlux48
.
typedef subtract_with_carry_engine<unsigned long long, 48, 5, 12> ranlux48_base;
Untuk informasi terperinci tentang pengurangan algoritma mesin carry, lihat artikel Wikipedia Generator Lagged Fibonacci.
Persyaratan
Header:<acak>
Namespace: std