0Pricing
C++ Academy · Pelajaran

Contoh Praktis

Dadu, pengacakan, dan pengambilan sampel

Contoh Praktis adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.

Melempar Dadu

Dadu bersisi enam adalah uniform_int_distribution(1, 6) yang diberi masukan dari mesin yang telah diberi seed.

#include <iostream>
#include <random>

int main() {
    std::mt19937 gen(2026);
    std::uniform_int_distribution<int> die(1, 6);
    for (int i = 0; i < 5; ++i) std::cout << die(gen) << ' ';
    std::cout << '\n';
    return 0;
}

Menjumlahkan Dua Dadu

Melempar dua dadu lalu menjumlahkannya menghasilkan rentang umum 2 hingga 12, dengan puncak pada angka 7.

#include <iostream>
#include <random>

int main() {
    std::mt19937 gen(1);
    std::uniform_int_distribution<int> die(1, 6);
    int total = die(gen) + die(gen);
    std::cout << "two dice sum: " << total << '\n';
    return 0;
}

Melempar Koin

Koin yang adil adalah bernoulli_distribution(0.5). Hitung sisi kepala dalam banyak pelemparan.

#include <iostream>
#include <random>

int main() {
    std::mt19937 gen(7);
    std::bernoulli_distribution coin(0.5);
    int heads = 0;
    for (int i = 0; i < 100; ++i) if (coin(gen)) ++heads;
    std::cout << heads << " heads out of 100\n";
    return 0;
}

Mengacak Set Kartu

std::shuffle mengurutkan ulang suatu rentang secara acak menggunakan mesin Anda, sebagai pengganti modern untuk random_shuffle yang telah dihapus.

#include <iostream>
#include <random>
#include <algorithm>
#include <vector>

int main() {
    std::vector<int> cards{1, 2, 3, 4, 5};
    std::mt19937 gen(3);
    std::shuffle(cards.begin(), cards.end(), gen);
    for (int c : cards) std::cout << c << ' ';
    std::cout << '\n';
    return 0;
}

Memilih Pemenang Acak

Pilih satu elemen dengan menghasilkan indeks acak dalam suatu rentang.

#include <iostream>
#include <random>
#include <vector>
#include <string>

int main() {
    std::vector<std::string> names{"Ann", "Ben", "Cara", "Dan"};
    std::mt19937 gen(9);
    std::uniform_int_distribution<int> pick(0, names.size() - 1);
    std::cout << "winner: " << names[pick(gen)] << '\n';
    return 0;
}

Mengambil Sampel Tanpa Pengembalian

std::sample mengambil k elemen berbeda dari suatu rentang, cocok untuk undian atau pemilihan soal kuis.

#include <iostream>
#include <random>
#include <algorithm>
#include <vector>

int main() {
    std::vector<int> pool{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    std::vector<int> picked;
    std::mt19937 gen(4);
    std::sample(pool.begin(), pool.end(), std::back_inserter(picked), 3, gen);
    for (int x : picked) std::cout << x << ' ';
    std::cout << '\n';
    return 0;
}

Karakter Kata Sandi Acak

Gunakan indeks ke dalam himpunan karakter dengan distribusi seragam untuk membuat string acak.

#include <iostream>
#include <random>
#include <string>

int main() {
    const std::string chars = "abcdefghijklmnopqrstuvwxyz";
    std::mt19937 gen(13);
    std::uniform_int_distribution<int> pick(0, chars.size() - 1);
    std::string pw;
    for (int i = 0; i < 8; ++i) pw += chars[pick(gen)];
    std::cout << pw << '\n';
    return 0;
}

Pilihan Berbobot

std::discrete_distribution memilih indeks berdasarkan bobot yang diberikan, sehingga hasil yang umum muncul lebih sering.

#include <iostream>
#include <random>

int main() {
    std::mt19937 gen(6);
    std::discrete_distribution<int> d{10, 1, 1}; // index 0 is heaviest
    int counts[3] = {0};
    for (int i = 0; i < 120; ++i) counts[d(gen)]++;
    std::cout << counts[0] << ' ' << counts[1] << ' ' << counts[2] << '\n';
    return 0;
}

Mensimulasikan Jalan Acak

Melangkah ke kiri atau kanan secara acak dan lacak position terakhirnya, sebuah simulasi stokastik sederhana.

#include <iostream>
#include <random>

int main() {
    std::mt19937 gen(2);
    std::bernoulli_distribution step(0.5);
    int pos = 0;
    for (int i = 0; i < 1000; ++i) pos += step(gen) ? 1 : -1;
    std::cout << "final position: " << pos << '\n';
    return 0;
}

Melempar hingga Mendapatkan Enam

Lakukan perulangan hingga suatu peristiwa terjadi untuk memodelkan percobaan, dalam hal ini menghitung jumlah lemparan yang diperlukan untuk mendapatkan angka enam.

#include <iostream>
#include <random>

int main() {
    std::mt19937 gen(15);
    std::uniform_int_distribution<int> die(1, 6);
    int rolls = 0;
    while (die(gen) != 6) ++rolls;
    std::cout << "extra rolls before a six: " << rolls << '\n';
    return 0;
}

Menghasilkan Data Pengujian

Distribusi dapat dengan cepat mengisi sebuah vektor dengan nilai acak untuk menguji algoritme.

#include <iostream>
#include <random>
#include <vector>

int main() {
    std::mt19937 gen(21);
    std::uniform_int_distribution<int> d(1, 50);
    std::vector<int> data(5);
    for (int& v : data) v = d(gen);
    for (int v : data) std::cout << v << ' ';
    std::cout << '\n';
    return 0;
}

Pemeriksaan Singkat

Uji pemahaman Anda tentang keacakan praktis.

Ringkasan

Anda telah menerapkan <random> dalam praktik:

  • dadu, koin, dan pemenang melalui distribusi seragam dan Bernoulli
  • std::shuffle untuk mengurutkan ulang dan std::sample untuk mengambil sampel tanpa pengembalian
  • discrete_distribution untuk pilihan berbobot, serta simulasi seperti jalan acak

Sekarang Anda memiliki seperangkat alat lengkap untuk kontainer asosiatif, pencincangan, input/output berkas, dan keacakan dalam C++.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Contoh Praktis” gratis?

Ya — teks lengkap “Contoh Praktis” 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 “Contoh Praktis”?

Dadu, pengacakan, dan pengambilan sampel 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 4 dari 4.

Berapa lama pelajaran “Contoh Praktis” 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

  1. Mesin Acak
  2. Distribusi
  3. Penyemaian yang Tepat
  4. Contoh Praktis
← Kembali ke C++ Academy