Kelas random_device
Menghasilkan urutan acak dari perangkat eksternal.
Sintaks
class random_device {
public:
typedef unsigned int result_type;
// constructor
explicit random_device(const std::string& token = "");
// properties
static result_type min();
static result_type max();
double entropy() const;
// generate
result_type operator()();
// no-copy functions
random_device(const random_device&) = delete;
void operator=(const random_device&) = delete;
};
Anggota
random_device
Entropi
random_device::operator()
Keterangan
Kelas ini menjelaskan sumber angka acak, dan diizinkan tetapi tidak diharuskan untuk tidak deterministik atau aman secara kriptografis oleh ISO C++ Standard. Dalam implementasi Visual Studio, nilai yang dihasilkan tidak deterministik dan aman secara kriptografis, tetapi berjalan lebih lambat daripada generator yang dibuat dari mesin dan adaptor mesin (seperti mersenne_twister_engine, mesin pilihan berkualitas tinggi dan cepat untuk sebagian besar aplikasi).
random_device
hasil didistribusikan secara seragam dalam rentang tertutup [ 0, 2
32).
random_device
tidak dijamin akan mengakibatkan panggilan non-pemblokiran.
Umumnya, random_device
digunakan untuk menyemai generator lain yang dibuat dengan mesin atau adaptor mesin. Untuk informasi selengkapnya, lihat acak>.<
Contoh
Kode berikut menunjukkan fungsionalitas dasar kelas ini dan contoh hasil. Karena sifat random_device
non-deterministik , nilai acak yang ditampilkan di bagian Output tidak akan cocok dengan hasil Anda. Ini normal dan diharapkan.
// random_device_engine.cpp
// cl.exe /W4 /nologo /EHsc /MTd
#include <random>
#include <iostream>
using namespace std;
int main()
{
random_device gen;
cout << "entropy == " << gen.entropy() << endl;
cout << "min == " << gen.min() << endl;
cout << "max == " << gen.max() << endl;
cout << "a random value == " << gen() << endl;
cout << "a random value == " << gen() << endl;
cout << "a random value == " << gen() << endl;
}
entropy == 32
min == 0
max == 4294967295
a random value == 2378414971
a random value == 3633694716
a random value == 213725214
Contoh ini sederhana dan tidak mewakili kasus penggunaan umum untuk generator ini. Untuk contoh kode yang lebih representatif, lihat acak>.<
Persyaratan
Header:<acak>
Namespace: std
random_device::random_device
Membuat generator.
random_device(const std::string& = "");
Keterangan
Konstruktor menginisialisasi generator sesuai kebutuhan, mengabaikan parameter string. Melemparkan nilai jenis yang ditentukan implementasi yang berasal dari pengecualian jika random_device
tidak dapat diinisialisasi.
random_device::entropy
Memperkirakan keacakan sumber.
double entropy() const noexcept;
Keterangan
Fungsi anggota mengembalikan perkiraan keacakan sumber, seperti yang diukur dalam bit.
random_device::operator()
Mengembalikan nilai acak.
result_type operator()();
Keterangan
Mengembalikan nilai yang didistribusikan secara seragam dalam interval tertutup [ min, max
] seperti yang ditentukan oleh fungsi min()
anggota dan max()
. Melemparkan nilai jenis yang ditentukan implementasi yang berasal dari pengecualian jika angka acak tidak dapat diperoleh.
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk