Bilangan Acak dengan Header random
Hasilkan bilangan acak berkualitas dengan mesin dan distribusi modern
Bilangan Acak dengan Header random adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.
Mengapa Bukan rand()?
std::rand() dari C lama menggunakan keadaan global, memiliki kualitas statistik yang buruk, dan tidak aman untuk thread. C++ modern menyediakan alat yang jauh lebih baik di <random>.
Resep Tiga Bagian
Bilangan acak dalam C++ modern melibatkan tiga bagian:
- sumber nilai awal (entropi sejati)
- mesin pembangkit (keadaan deterministik)
- distribusi (membentuk keluaran)
Menentukan Nilai Awal dengan random_device
std::random_device mengambil sampel entropi nyata dari OS — tetapi prosesnya bisa lambat. Gunakan sekali untuk menentukan nilai awal mesin yang cepat.
#include <random>
std::random_device rd;
std::mt19937 engine(rd());Mesin mt19937
std::mt19937 (Mersenne Twister) adalah mesin pseudo-acak yang cepat dengan kualitas statistik yang sangat baik. Ini adalah pilihan bawaan untuk sebagian besar aplikasi.
Distribusi Bilangan Bulat Seragam
Menghasilkan bilangan bulat yang terdistribusi secara seragam dalam rentang tertutup.
std::uniform_int_distribution<int> dice(1, 6);
int roll = dice(engine);Distribusi Bilangan Real Seragam
Untuk bilangan pecahan dalam rentang setengah terbuka [a, b).
std::uniform_real_distribution<double> dist(0.0, 1.0);
double x = dist(engine);Distribusi Normal (Gaussian)
Untuk bilangan acak berbentuk kurva lonceng — umum digunakan dalam simulasi dan pembelajaran mesin.
std::normal_distribution<double> norm(0.0, 1.0); // mean 0, stddev 1
double x = norm(engine);Distribusi Lainnya
Pustaka ini menyertakan banyak distribusi lainnya: bernoulli_distribution, poisson_distribution, exponential_distribution, discrete_distribution, dan lainnya.
Keacakan yang Dapat Direproduksi
Untuk pengujian, gunakan nilai awal tetap agar mendapatkan urutan yang sama pada setiap eksekusi.
std::mt19937 engine(42);
// Same output every time you run the programPengacakan Acak
Acaklah sebuah kontainer dengan std::shuffle, yang menerima mesin apa pun.
#include <algorithm>
std::vector<int> v = {1,2,3,4,5};
std::shuffle(v.begin(), v.end(), engine);Jebakan: Menentukan Nilai Awal dalam Perulangan
Jangan membuat random_device atau mesin baru untuk setiap bilangan acak. Buat satu mesin dan gunakan kembali pada setiap pemanggilan.
Pemeriksaan Singkat
Apa cara modern C++ yang paling aman untuk menentukan nilai awal mesin pseudo-acak?
Ringkasan
Keacakan dalam C++ modern menggunakan random_device untuk menentukan nilai awal, mt19937 sebagai mesin, dan distribusi seperti uniform_int_distribution untuk membentuk keluaran. Gunakan kembali mesinnya — jangan pernah membuat satu mesin untuk setiap pemanggilan.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Bilangan Acak dengan Header random” gratis?
Ya — teks lengkap “Bilangan Acak dengan Header random” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Bilangan Acak dengan Header random”?
Hasilkan bilangan acak berkualitas dengan mesin dan distribusi modern Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C++ Academy?
Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Bilangan Acak dengan Header random” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?
Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Tipe Bilangan Bulat vs Titik Mengambang
- Header cmath: pow, sqrt, abs, round
- Bilangan Acak dengan Header random
- Batas Numerik dan Perilaku Luapan