0Pricing
C++ Academy · Ders

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.

Bu kursun tüm dersleri

  1. Rastgele Üreteçler
  2. Dağılımlar
  3. Doğru Tohumlama
  4. Uygulamalı Örnekler
← C++ Academy Sayfasına Dön