Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Negatif bir binom dağılımı oluşturur.
Sözdizimi
template<class IntType = int>
class negative_binomial_distribution
{
public:
// types
typedef IntType result_type;
struct param_type;
// constructor and reset functions
explicit negative_binomial_distribution(result_type k = 1, double p = 0.5);
explicit negative_binomial_distribution(const param_type& parm);
void reset();
// generating functions
template `<`class URNG>
result_type operator()(URNG& gen);
template `<`class URNG>
result_type operator()(URNG& gen, const param_type& parm);
// property functions
result_type k() const;
double p() const;
param_type param() const;
void param(const param_type& parm);
result_type min() const;
result_type max() const;
};
Parametreler
IntType
Tamsayı sonuç türü, varsayılan olarak olarak intayarlanır. Olası türler için bkz <. rastgele>.
Açıklamalar
Sınıf şablonu, negatif binom dağılımı ayrık olasılık işlevine göre dağıtılan, kullanıcı tarafından belirtilen tam sayı türü veya sağlanmayan tür int değerlerini üreten bir dağılımı açıklar. Aşağıdaki tabloda, tek tek üyeler hakkındaki makalelere bağlantılar yer alır.
negative_binomial_distribution
param_type
Özellik üyeleri k() ve p() sırasıyla şu anda depolanan dağıtım parametresi değerlerini k ve p döndürür.
Özellik üyesi param() depolanan dağıtım parametresi paketini ayarlar veya döndürür param_type .
min() ve max() üye işlevleri sırasıyla mümkün olan en küçük sonucu ve mümkün olan en büyük sonucu döndürür.
reset() Üye işlevi önbelleğe alınmış değerleri atar, böylece bir sonraki çağrısının sonucu, çağrıdan operator() önce altyapıdan alınan hiçbir değere bağımlı olmaz.
operator() Üye işlevleri, geçerli parametre paketinden veya belirtilen parametre paketinden ÜRNG altyapısını temel alarak bir sonraki oluşturulan değeri döndürür.
Dağıtım sınıfları ve üyeleri hakkında daha fazla bilgi için bkz <. rastgele>.
Negatif binom dağılımı ayrık olasılık işlevi hakkında ayrıntılı bilgi için Wolfram MathWorld makalesi Negatif Binom Dağılımı'na bakın.
Örnek
// compile with: /EHsc /W4
#include <random>
#include <iostream>
#include <iomanip>
#include <string>
#include <map>
void test(const int k, const double p, const int& s) {
// uncomment to use a non-deterministic seed
// std::random_device rd;
// std::mt19937 gen(rd());
std::mt19937 gen(1729);
std::negative_binomial_distribution<> distr(k, p);
std::cout << std::endl;
std::cout << "k == " << distr.k() << std::endl;
std::cout << "p == " << distr.p() << std::endl;
// generate the distribution as a histogram
std::map<int, int> histogram;
for (int i = 0; i < s; ++i) {
++histogram[distr(gen)];
}
// print results
std::cout << "Histogram for " << s << " samples:" << std::endl;
for (const auto& elem : histogram) {
std::cout << std::setw(5) << elem.first << ' ' << std::string(elem.second, ':') << std::endl;
}
std::cout << std::endl;
}
int main()
{
int k_dist = 1;
double p_dist = 0.5;
int samples = 100;
std::cout << "Use CTRL-Z to bypass data entry and run using default values." << std::endl;
std::cout << "Enter an integer value for k distribution (where 0 < k): ";
std::cin >> k_dist;
std::cout << "Enter a double value for p distribution (where 0.0 < p <= 1.0): ";
std::cin >> p_dist;
std::cout << "Enter an integer value for a sample count: ";
std::cin >> samples;
test(k_dist, p_dist, samples);
}
İlk çalıştırma:
Use CTRL-Z to bypass data entry and run using default values.
Enter an integer value for k distribution (where 0 `<` k): 1
Enter a double value for p distribution (where 0.0 `<`p `<`= 1.0): .5
Enter an integer value for a sample count: 100
k == 1
p == 0.5
Histogram for 100 samples:
0 :::::::::::::::::::::::::::::::::::::::::::
1 ::::::::::::::::::::::::::::::::
2 ::::::::::::
3 :::::::
4 ::::
5 ::
İkinci çalıştırma:
Use CTRL-Z to bypass data entry and run using default values.
Enter an integer value for k distribution (where 0 `<` k): 100
Enter a double value for p distribution (where 0.0 `<` p <= 1.0): .667
Enter an integer value for a sample count: 100
k == 100
p == 0.667
Histogram for 100 samples:
31 ::
32 :
33 ::
34 :
35 ::
37 ::
38 :
39 :
40 ::
41 :::
42 :::
43 :::::
44 :::::
45 ::::
46 ::::::
47 ::::::::
48 :::
49 :::
50 :::::::::
51 :::::::
52 ::
53 :::
54 :::::
56 ::::
58 :
59 :::::
60 ::
61 :
62 ::
64 :
69 ::::
Gereksinimler
Üst bilgi:<rastgele>
Ad alanı: std
negative_binomial_distribution::negative_binomial_distribution
Dağıtımı oluşturur.
explicit negative_binomial_distribution(result_type k = 1, double p = 0.5);
explicit negative_binomial_distribution(const param_type& parm);
Parametreler
k
k Dağıtım parametresi.
p
p Dağıtım parametresi.
parm
Dağılımı oluşturmak için kullanılan parametre yapısı.
Açıklamalar
Önkoşul:0.0 < k ve 0.0 < p ≤ 1.0
İlk oluşturucu, depolanan p değeri p değerini ve depolanan değeri kktutan bir nesne oluşturur.
İkinci oluşturucu, depolanan parametreleri parm'den başlatılan bir nesne oluşturur. Üye işlevini çağırarak param() mevcut bir dağıtımın geçerli parametrelerini alabilir ve ayarlayabilirsiniz.
negative_binomial_distribution::p aram_type
Dağıtımın parametrelerini depolar.
struct param_type
{
typedef negative_binomial_distribution<result_type> distribution_type;
param_type(result_type k = 1, double p = 0.5);
result_type k() const;
double p() const;
bool operator==(const param_type& right) const;
bool operator!=(const param_type& right) const;
};
Parametreler
k
k Dağıtım parametresi.
p
p Dağıtım parametresi.
Sağ
param_type Karşılaştırmak için kullanılan yapı.
Açıklamalar
Önkoşul:0.0 < k ve 0.0 < p ≤ 1.0
Bu yapı, örnek oluşturma sırasında dağıtımın sınıf oluşturucusunun, mevcut bir dağıtımın param() depolanmış parametrelerini ayarlamak için üye işlevine operator() geçirilebilir ve depolanan parametrelerin yerine kullanılacaktır.