Uygulamalı Örnekler
Zarlar, karıştırma ve örnekleme
Uygulamalı Örnekler, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.
Zar Atma
Altı yüzlü bir zar, seed edilmiş bir motorla beslenen bir uniform_int_distribution(1, 6) nesnesidir.
#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;
}İki Zarın Toplamını Hesaplama
İki zar atıp sonuçlarını toplamak, 7'de tepe yapan ve 2 ile 12 arasında değişen tanıdık bir aralık üretir.
#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;
}Yazı Tura Atma
Adil bir yazı tura denemesi, bernoulli_distribution(0.5) ile modellenir. Çok sayıda atışta tura sayısını hesaplayın.
#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;
}Bir Deste Karıştırma
std::shuffle, motorunuzu kullanarak bir aralığı rastgele yeniden sıralar ve kaldırılmış olan random_shuffle yerine kullanılan modern çözümdür.
#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;
}Rastgele Bir Kazanan Seçme
Aralık içinde rastgele bir indis üreterek bir öğe seçin.
#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;
}Yerine Koymadan Örnekleme
std::sample, bir aralıktan birbirinden farklı k öğe seçer; bu, piyango veya bilgi yarışması seçimi için idealdir.
#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;
}Rastgele Parola Karakterleri
Rastgele bir dize oluşturmak için düzgün dağılım kullanarak bir karakter kümesinde indisleme yapın.
#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;
}Ağırlıklı Seçim
std::discrete_distribution, verilen ağırlıklara göre indisler seçer; böylece yaygın sonuçlar daha sık ortaya çıkar.
#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;
}Rastgele Yürüyüşü Simüle Etme
Rastgele olarak sola veya sağa adım atıp son position değerini izleyin; bu, basit bir stokastik simülasyondur.
#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;
}Altı Gelene Kadar Zar Atma
Denemeleri modellemek için bir olay gerçekleşene kadar döngüyü sürdürün; burada amaç, altı gelmesi için gereken atış sayısını hesaplamaktır.
#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;
}Sınama Verileri Üretme
Dağılımlar, algoritmaları sınamak üzere bir vektörü rastgele değerlerle hızlıca doldurmanızı sağlar.
#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;
}Kısa Sınama
Uygulamalı rastgelelik hakkındaki anlayışınızı sınayın.
Özet
<random> kütüphanesini uygulamada kullandınız:
- düzgün ve bernoulli dağılımlarıyla zarlar, paralar ve kazananlar
- yeniden sıralama için
std::shuffle, yerine koymadan seçim içinstd::sample - ağırlıklı seçimler için
discrete_distributionve rastgele yürüyüşler gibi simülasyonlar
Artık C++'ta ilişkisel kapsayıcılar, karma, dosya G/Ç ve rastgelelik için eksiksiz bir araç takımına sahipsiniz.
Sıkça Sorulan Sorular
“Uygulamalı Örnekler” dersi ücretsiz mi?
Evet — “Uygulamalı Örnekler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.
“Uygulamalı Örnekler” dersinde ne öğreneceğim?
Zarlar, karıştırma ve örnekleme C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C++ Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Uygulamalı Örnekler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Rastgele Üreteçler
- Dağılımlar
- Doğru Tohumlama
- Uygulamalı Örnekler