случайный заголовок в C ++ | Набор 3 (Распределения)
Мы обсудили генераторы в Наборе 1. Мы также обсудили три дистрибутива в Наборе 2. В этом посте обсуждаются другие дистрибутивы.
IV.Распределение по ставкам:
распределение Пуассона | Распределение Пуассона |
экспоненциальное_распределение | Экспоненциальное распределение |
gamma_distribution | Гамма-распределение |
weibull_distribution | Распределение Вейбулла |
extreme_value_distribution | Распределение экстремальных ценностей |
1. poisson_distribution: это распределение, которое производит целые числа в соответствии с распределением Пуассона, которое задается следующей функцией массы вероятности:
// Illustrating the use of operator() in // poisson_distribution #include <iostream> #include <chrono> #include <random> using namespace std; // Driver Program int main() { // construct a trivial random generator // engine from a time-based seed: unsigned seed = chrono::system_clock::now().time_since_epoch().count(); default_random_engine generator (seed); poisson_distribution< int > distribution (7.1); cout << "Poisson-distribution(mean=5.0): " ; for ( int i=0; i<10; ++i) // use of operator() cout << distribution(generator) << " " ; cout << endl; return 0; } |
Output:
Poisson-distribution(mean=5.0): 11 5 5 9 10 6 15 3 6 5
2. exponential_distribution: It is a random number distribution that produces floating-point values according to an exponential distribution, given by:
// Illustrating the use of operator() in // exponential_distribution #include <iostream> #include <chrono> #include <thread> #include <random> using namespace std; // Driver program int main() { // It constructs a trivial random // generator engine from a time-based seed int seed = chrono::system_clock::now().time_since_epoch().count(); default_random_engine generator (seed); exponential_distribution< double > distribution (1.0); cout << "Hi"s separated by 2 seconds, on average:
" ; for ( int i=0; i<5; ++i) { // use of operator() double number = distribution(generator); chrono::duration< double > period (number); // It makes the thread sleep // for the time period(i.e. number) this_thread::sleep_for( period ); cout << "Hi,Geeks!!" << endl; } return 0; } |
Output:
Hi"s separated by 2 seconds, on average: Hi,Geeks!! Hi,Geeks!!
3. gamma_distribution: It is a random number distribution that produces floating-point values according to a gamma distribution, given by:
// Illustrating the use of reset in gamma_distribution #include <iostream> #include <random> using namespace std; // Driver program int main() { // Random number generator default_random_engine generator; gamma_distribution< double > distribution(1.0,2.0); // prints first random number cout << distribution(generator) << endl; // use of reset distribution.reset(); // prints the second random number // independent of first cout << distribution(generator) << endl; return 0; } |
Output:
1.14392 2.23359
4. weibull_distribution:It is a random number distribution that produces floating-point values according to a 2-parameter Weibull distribution,given by:
// Illustrating the use of min and max // in weibull_distribution #include <iostream> #include <chrono> #include <random> using namespace std; // Driver program int main () { // It constructs a trivial random // generator engine from a time-based seed unsigned seed = chrono::system_clock::now().time_since_epoch().count(); default_random_engine generator (seed); weibull_distribution< double > distribution (2.0,1.0); cout << distribution(generator) << " is a random number between " ; // use of min and max cout << generator.min() << " and " << generator.max(); return 0; } |
Output:
1.54229 is a random number between 1 and 2147483646
5. extreme_value_distribution:It is a random number distribution that produces floating-point values according to a Type I extreme value distribution,given by:
// Illustrating the use of param in // extreme_value_distribution #include <iostream> #include <random> using namespace std; // Driver program int main() { default_random_engine generator; extreme_value_distribution< double > d1(2.0,4.0); extreme_value_distribution< double > d2(d1.param()); // prints the first value cout << d1(generator) << endl; // prints the second independent value cout << d2(generator) << endl; return 0; } |
Output:
9.8351 3.95306
V. Related to Normal distribution
normal_distribution | Normal Distribution |
lognormal_distribution | Lognormal Distribution |
chi_squared_distribution | Chi-squared Distribution |
cauchy_distribution | Cauchy Distribution |
fisher_f_distribution | Fisher F-Distribution |
student_t_distribution | Student T-Distribution |
1. normal_distribution: It is a random number distribution that produces floating-point values according to a normal distribution, given by:
where: (µ) :mean sigma :standard deviation
// Illustrating the use of operator() // in normal_distribution #include <iostream> #include <chrono> #include <random> using namespace std; // Driver program int main() { // It constructs a trivial random // generator engine from a time-based seed unsigned seed = chrono::system_clock::now().time_since_epoch().count(); default_random_engine generator (seed); // Initializes the normal distribution normal_distribution< double > distribution (1.0,2.0); cout << "Normal-distribution(1.0,2.0):" << endl; for ( int i=0; i<5; i++) // Use of operator() cout << distribution(generator) << endl; return 0; } |
Output:
Normal-distribution(1.0,2.0): 1.59499 -0.458303 1.34411 0.138838 3.03433
2. lognormal_distribution:It is a random number distribution that produces floating-point values according to a lognormal distribution, given by:
// Illustrating the use of reset in // lognormal_distribution #include <iostream> #include <random> using namespace std; // Driver program int main() { // the random number generator default_random_engine generator; lognormal_distribution< double > distribution(1.0,2.0); // prints first value: cout << distribution(generator) << endl; // Use of reset distribution.reset(); // prints second value independent of first cout << distribution(generator) << endl; return 0; } |
Output:
2.12989 10.6822
3. chi_squared_distribution:It is a random number distribution that produces floating-point values according to a chi-squared distribution,given by:
where, n : degrees of freedom and n>0, n/2 : shape parameter
// Illustrating the use of operator() in // chi_squared_distribution #include <iostream> #include <chrono> #include <random> using namespace std; // Driver program int main() { // It constructs a trivial random // generator engine from a time-based seed unsigned seed = chrono::system_clock::now().time_since_epoch().count(); default_random_engine generator (seed); chi_squared_distribution< double > distribution (4.0); cout << "chi-squared-distribution(4.0):" << endl; for ( int i=0; i<5; i++) // use of operator() cout << distribution(generator) << endl; return 0; } |
Output:
chi-squared-distribution(4.0): 2.18701 6.86953 1.77983 9.79626 5.04758
4. cauchy_distribution:It is a random number distribution that produces floating-point values according to a Cauchy distribution, given by:
where, a and b are distribution parameters
// Illustrating the use of param // in cauchy_distribution #include <iostream> #include <random> using namespace std; // Driver program int main() { default_random_engine generator; cauchy_distribution< double > d1(0.0,1.0); cauchy_distribution< double > d2(d1.param()); // prints the first value cout << d1(generator) << endl; // prints the second value cout << d2(generator) << endl; return 0; } |
Output:
0.438486 7.65462
5. fisher_f_distribution:It is a random number distribution that produces floating-point values according to a Fisher F-distribution, given by:
It produces random numbers by dividing two independent Chi-squared distributions of m and n degrees of freedom.
// Illustrating the use of // operator() in fisher_f_distribution #include <iostream> #include <chrono> #include <random> using namespace std; // Driver program int main() { // It constructs a trivial random generator engine // from a time-based seed unsigned seed = chrono::system_clock::now().time_since_epoch().count(); default_random_engine generator (seed); fisher_f_distribution< double > distribution (1.0,2.0); cout << "fisher-f-distribution(1.0,2.0):" << endl; for ( int i=0; i<5; i++) // use of operator() cout << distribution(generator) << endl; return 0; } |
Output:
fisher-f-distribution(1.0,2.0): 0.208066 2.76882 0.0305701 0.96243 0.444256
6. student_t_distribution:It is a random number distribution that produces floating-point values according to a Student T-distribution, given by:
where, n is the distribution parameter
// Illustrating the use of min and max // in student_t_distribution #include <iostream> #include <chrono> #include <random> using namespace std; // Driver program int main () { // It constructs a trivial random // generator engine from a time-based seed unsigned seed = chrono::system_clock::now().time_since_epoch().count(); default_random_engine generator (seed); student_t_distribution< double > distribution (8.0); cout << distribution(generator) << " is a random number between " ; // use of min and max cout << generator.min() << " and " << generator.max(); return 0; } |
Output:
0.00906058 is a random number between 1 and 2147483646
This article is contributed by Shambhavi Singh. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.