Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Generuje jednolity (każda wartość jest tak samo prawdopodobnego) dystrybucji całkowitą zakresu danych wyjściowych wraz z wartościami granicznymi włącznie.
template<class IntType = int> class uniform_int_distribution { public: // types typedef IntType result_type; struct param_type; // constructors and reset functions explicit uniform_int_distribution(IntType a = 0, IntType b = numeric_limits<IntType>::max()); explicit uniform_int_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 a() const; result_type b() const; param_type param() const; void param(const param_type& parm); result_type min() const; result_type max() const; };
Parametry
- IntType
Typ wyniku całkowitą, wartość domyślna to int.Dla typów możliwych, zobacz <random>.
Uwagi
Klasa szablonu opisuje wraz z wartościami granicznymi włącznie dystrybucji, tworzącego wartości typu integralną określony przez użytkownika z rozkładu, tak aby każda wartość jest tak samo prawdopodobne.Poniższe łącza tabeli do artykułów dotyczących poszczególnych elementów.
uniform_int_distribution::a |
uniform_int_distribution::param |
|
uniform_int_distribution::operator() |
uniform_int_distribution::b |
Element członkowski właściwości a() Zwraca obecnie przechowywane minimalna granica dystrybucji, aż b() Zwraca obecnie przechowywane granica maksymalna.Ta klasa dystrybucji te wartości minimalnej i maksymalnej są takie same jak zwrócony przez typowe funkcje właściwości min() i max() opisane w < losowe > tematu.
Aby uzyskać więcej informacji na temat klasy dystrybucji i ich elementy członkowskie zobacz <random>.
Przykład
// compile with: /EHsc /W4
#include <random>
#include <iostream>
#include <iomanip>
#include <string>
#include <map>
void test(const int a, const int b, const int s) {
// uncomment to use a non-deterministic seed
// std::random_device rd;
// std::mt19937 gen(rd());
std::mt19937 gen(1729);
std::uniform_int_distribution<> distr(a, b);
std::cout << "lower bound == " << distr.a() << std::endl;
std::cout << "upper bound == " << distr.b() << 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 << "Distribution 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 a_dist = 1;
int b_dist = 10;
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 the lower bound of the distribution: ";
std::cin >> a_dist;
std::cout << "Enter an integer value for the upper bound of the distribution: ";
std::cin >> b_dist;
std::cout << "Enter an integer value for the sample count: ";
std::cin >> samples;
test(a_dist, b_dist, samples);
}
Dane wyjściowe
Wymagania
Nagłówek: < losowe >
Przestrzeń nazw: std