Dağılımlar
Rastgele çıktıyı şekillendirin
Dağılımlar, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 2. 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.
Dağılımlar ne yapar
Bir dağılım, bir üretecin ham bitlerini istenen biçim ve aralıktaki değerlere dönüştürür. Dağılımı, üreteci bağımsız değişken olarak vererek çağırırsınız.
#include <iostream>
#include <random>
int main() {
std::mt19937 gen(1);
std::uniform_int_distribution<int> dist(1, 100);
std::cout << "value: " << dist(gen) << '\n';
return 0;
}Uniform tamsayı dağılımı
std::uniform_int_distribution<int>(a, b), uçları dahil [a, b] aralığında, her biri eşit olasılığa sahip tamsayılar döndürür.
#include <iostream>
#include <random>
int main() {
std::mt19937 gen(5);
std::uniform_int_distribution<int> die(1, 6);
for (int i = 0; i < 5; ++i) std::cout << die(gen) << ' ';
std::cout << '\n';
return 0;
}Uniform gerçek sayı dağılımı
std::uniform_real_distribution<double>(a, b), olasılıklar için kullanışlı olan [a, b) aralığında kayan noktalı değerler üretir.
#include <iostream>
#include <random>
#include <iomanip>
int main() {
std::mt19937 gen(3);
std::uniform_real_distribution<double> dist(0.0, 1.0);
std::cout << std::fixed << std::setprecision(3) << dist(gen) << '\n';
return 0;
}Bernoulli dağılımı
std::bernoulli_distribution(p), p olasılığıyla true döndürerek yanlı bir yazı tura atışını modeller.
#include <iostream>
#include <random>
int main() {
std::mt19937 gen(8);
std::bernoulli_distribution coin(0.5);
for (int i = 0; i < 5; ++i) std::cout << (coin(gen) ? 'H' : 'T');
std::cout << '\n';
return 0;
}Normal dağılım
std::normal_distribution<double>(mean, stddev), ortalama çevresinde kümelenen bir çan eğrisi üretir.
#include <iostream>
#include <random>
#include <iomanip>
int main() {
std::mt19937 gen(11);
std::normal_distribution<double> dist(100.0, 15.0);
std::cout << std::fixed << std::setprecision(1) << dist(gen) << '\n';
return 0;
}Bir dağılımı yeniden kullanma
Dağılımları tekrar tekrar çağırmak ucuzdur. Bir dağılım oluşturun ve aynı üreteçle bir döngü içinde çağırın.
#include <iostream>
#include <random>
int main() {
std::mt19937 gen(20);
std::uniform_int_distribution<int> d(1, 3);
int counts[4] = {0};
for (int i = 0; i < 12; ++i) counts[d(gen)]++;
std::cout << counts[1] << ' ' << counts[2] << ' ' << counts[3] << '\n';
return 0;
}Poisson Dağılımı
std::poisson_distribution<int>(mean), dakika başına gerçekleşen gelişler gibi seyrek olayların sayılarını modeller.
#include <iostream>
#include <random>
int main() {
std::mt19937 gen(30);
std::poisson_distribution<int> dist(4.0);
for (int i = 0; i < 5; ++i) std::cout << dist(gen) << ' ';
std::cout << '\n';
return 0;
}Dağılım Parametreleri
Bir dağılımın parametrelerini a(), b(), mean() veya stddev() gibi erişim işlevleriyle sorgulayabilirsiniz.
#include <iostream>
#include <random>
int main() {
std::uniform_int_distribution<int> d(10, 50);
std::cout << "range: " << d.a() << " to " << d.b() << '\n';
return 0;
}Dağılım Durumunu Sıfırlama
Bazı dağılımlar, örneğin normal dağılım, dahili durumu önbelleğe alır. reset(), sonraki değerin yalnızca motora bağlı olmasını sağlamak için bu durumu temizler.
#include <iostream>
#include <random>
int main() {
std::mt19937 gen(40);
std::normal_distribution<double> dist(0.0, 1.0);
dist(gen);
dist.reset();
std::cout << "distribution state reset\n";
return 0;
}Rastgele Bir Öğe Seçme
Rastgele bir dizi indisi seçmek için 0 ile size - 1 arasında bir uniform_int_distribution kullanın.
#include <iostream>
#include <random>
#include <string>
int main() {
std::string colors[] = {"red", "green", "blue"};
std::mt19937 gen(50);
std::uniform_int_distribution<int> pick(0, 2);
std::cout << colors[pick(gen)] << '\n';
return 0;
}Pi'yi Tahmin Etme
Dağılımlar Monte Carlo yöntemlerine güç verir. Bir karede rastgele noktalar örneklemek, pi değerini tahmin etmenizi sağlar.
#include <iostream>
#include <random>
#include <iomanip>
int main() {
std::mt19937 gen(60);
std::uniform_real_distribution<double> u(0.0, 1.0);
int inside = 0, n = 10000;
for (int i = 0; i < n; ++i) {
double x = u(gen), y = u(gen);
if (x * x + y * y <= 1.0) ++inside;
}
std::cout << std::fixed << std::setprecision(2) << 4.0 * inside / n << '\n';
return 0;
}Kısa Sınama
Dağılım aralıkları hakkındaki anlayışınızı sınayın.
Özet
Dağılımlar hakkında şunları öğrendiniz:
- motorun çıktısını biçimlendirirler:
uniform_int(uçlar dahil),uniform_real([a,b)),bernoulli,normal,poisson - onları motorla, örneğin
dist(gen)şeklinde çağırabilir ve döngülerde yeniden kullanabilirsiniz - öğe seçmeyi ve Monte Carlo tahminini mümkün kılarlar
Sonraki bölümde motorları doğru şekilde seed edeceksiniz.
Sıkça Sorulan Sorular
“Dağılımlar” dersi ücretsiz mi?
Evet — “Dağılımlar” 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.
“Dağılımlar” dersinde ne öğreneceğim?
Rastgele çıktıyı şekillendirin 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 2. dersidir.
“Dağılımlar” 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.