Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menghasilkan distribusi binomial.
Sintaks
template<class IntType = int>
class binomial_distribution
{
public:
// types
typedef IntType result_type;
struct param_type;
// constructors and reset functions
explicit binomial_distribution(result_type t = 1, double p = 0.5);
explicit 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 t() const;
double p() const;
param_type param() const;
void param(const param_type& parm);
result_type min() const;
result_type max() const;
};
Parameter
IntType
Jenis hasil bilangan bulat, default ke int. Untuk jenis yang mungkin, lihat acak>.<
URNG
Mesin generator angka acak yang seragam. Untuk jenis yang mungkin, lihat acak>.<
Keterangan
Templat kelas menjelaskan distribusi yang menghasilkan nilai jenis integral yang ditentukan pengguna, atau mengetik int jika tidak ada yang disediakan, didistribusikan sesuai dengan fungsi probabilitas diskret Distribusi Binomial. Tabel berikut ini menautkan ke artikel tentang masing-masing anggota.
binomial_distribution
param_type
Anggota t() properti dan p() mengembalikan nilai parameter distribusi yang saat ini disimpan t dan p masing-masing.
Anggota param() properti menetapkan atau mengembalikan paket parameter distribusi tersimpan param_type .
Fungsi min() anggota dan max() mengembalikan hasil sekecil mungkin dan hasil terbesar yang mungkin, masing-masing.
Fungsi reset() anggota membuang nilai cache apa pun, sehingga hasil panggilan operator() berikutnya tidak bergantung pada nilai apa pun yang diperoleh dari mesin sebelum panggilan.
Fungsi operator() anggota mengembalikan nilai yang dihasilkan berikutnya berdasarkan mesin URNG, baik dari paket parameter saat ini, atau paket parameter yang ditentukan.
Untuk informasi selengkapnya tentang kelas distribusi dan anggotanya, lihat acak>.<
Untuk informasi terperinci tentang fungsi probabilitas diskrit distribusi binomial, lihat artikel Distribusi Binomial Wolfram MathWorld.
Contoh
// compile with: /EHsc /W4
#include <random>
#include <iostream>
#include <iomanip>
#include <string>
#include <map>
void test(const int t, 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::binomial_distribution<> distr(t, p);
std::cout << std::endl;
std::cout << "p == " << distr.p() << std::endl;
std::cout << "t == " << distr.t() << 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 t_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 t distribution (where 0 <= t): ";
std::cin >> t_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(t_dist, p_dist, samples);
}
Eksekusi pertama:
Use CTRL-Z to bypass data entry and run using default values.
Enter an integer value for t distribution (where 0 <= t): 22
Enter a double value for p distribution (where 0.0 <= p <= 1.0): .25
Enter an integer value for a sample count: 100
p == 0.25
t == 22
Histogram for 100 samples:
1 :
2 ::
3 :::::::::::::
4 ::::::::::::::
5 :::::::::::::::::::::::::
6 ::::::::::::::::::
7 :::::::::::::
8 ::::::
9 ::::::
11 :
12 :
Eksekusi kedua:
Use CTRL-Z to bypass data entry and run using default values.
Enter an integer value for t distribution (where 0 <= t): 22
Enter a double value for p distribution (where 0.0 <= p <= 1.0): .5
Enter an integer value for a sample count: 100
p == 0.5
t == 22
Histogram for 100 samples:
6 :
7 ::
8 :::::::::
9 ::::::::::
10 ::::::::::::::::
11 :::::::::::::::::::
12 :::::::::::
13 :::::::::::::
14 :::::::::::::::
15 ::
16 ::
Eksekusi ketiga:
Use CTRL-Z to bypass data entry and run using default values.
Enter an integer value for t distribution (where 0 <= t): 22
Enter a double value for p distribution (where 0.0 <= p <= 1.0): .75
Enter an integer value for a sample count: 100
p == 0.75
t == 22
Histogram for 100 samples:
13 ::::
14 :::::::::::
15 :::::::::::::::
16 :::::::::::::::::::::
17 ::::::::::::::
18 :::::::::::::::::
19 :::::::::::
20 ::::::
21 :
Persyaratan
Header:<acak>
Namespace: std
binomial_distribution::binomial_distribution
Membangun distribusi.
explicit binomial_distribution(result_type t = 1, double p = 0.5);
explicit binomial_distribution(const param_type& parm);
Parameter
t
Parameter t distribusi.
p
Parameter p distribusi.
parm
Struktur yang param_type digunakan untuk membangun distribusi.
Keterangan
Prasyarat: 0 ≤ t dan 0.0 ≤ p ≤ 1.0
Konstruktor pertama membuat objek yang nilai p tersimpannya menyimpan nilai p dan yang nilai t tersimpannya menyimpan nilai t.
Konstruktor kedua membuat objek yang parameter tersimpan diinisialisasi dari parm. Anda dapat memperoleh dan mengatur parameter saat ini dari distribusi yang ada dengan memanggil param() fungsi anggota.
binomial_distribution::p aram_type
Menyimpan semua parameter distribusi.
struct param_type {
typedef binomial_distribution<result_type> distribution_type;
param_type(result_type t = 1, double p = 0.5);
result_type t() const;
double p() const;
.....
bool operator==(const param_type& right) const;
bool operator!=(const param_type& right) const;
};
Parameter
t
Parameter t distribusi.
p
Parameter p distribusi.
right
Objek param_type untuk dibandingkan dengan ini.
Keterangan
Prasyarat: 0 ≤ t dan 0.0 ≤ p ≤ 1.0
Struktur ini dapat diteruskan ke konstruktor kelas distribusi saat instansiasi, ke param() fungsi anggota untuk mengatur parameter tersimpan dari distribusi yang ada, dan untuk operator() digunakan sebagai pengganti parameter tersimpan.