En probabilidad, la función de distribución uniforme se refiere a la distribución en la que las probabilidades se definen en una variable aleatoria continua, que puede tomar cualquier valor entre dos números, luego se dice que la distribución es una distribución de probabilidad continua. Por ejemplo, la temperatura a lo largo de un día determinado se puede representar mediante una variable aleatoria continua y se dice que la distribución de probabilidad correspondiente es continua.
C++ ha introducido la clase uniform_real_distribution en la biblioteca aleatoria cuya función miembro proporciona números reales aleatorios o valores continuos de un rango de entrada dado con probabilidad uniforme.
Funciones miembro públicas en la clase uniform_real_distribution:
- operator(): esta función devuelve un valor aleatorio del rango dado. El tipo de datos del valor devuelto se especifica durante la inicialización de la clase de plantilla. La probabilidad para cualquier valor es la misma. La complejidad temporal de esta operación es O(1).
Ejemplo:CPP
// C++ code to demonstrate the working of
// operator() function
#include <iostream>
// for uniform_real_distribution function
#include <random>
using
namespace
std;
int
main()
{
// Here default_random_engine object
// is used as source of randomness
// We can give seed also to default_random_engine
// if psuedorandom numbers are required
default_random_engine generator;
double
a = 0.0, b = 1.0;
// Initializing of uniform_real_distribution class
uniform_real_distribution<
double
> distribution(a, b);
// number of experiments
const
int
num_of_exp = 10000000;
// number of ranges
int
n = 100;
int
p[n] = {};
for
(
int
i = 0; i < num_of_exp; ++i) {
// using operator() function
// to give random values
double
number = distribution(generator);
++p[
int
(number * n)];
}
cout <<
"Probability of some ranges"
<< endl;
// Displaying the probability of some ranges
// after generating values 10000 times.
cout <<
"0.50-0.51"
<<
" "
<< (
float
)p[50] / (
float
)num_of_exp << endl;
cout <<
"0.60-0.61"
<<
" "
<< (
float
)p[60] / (
float
)num_of_exp << endl;
cout <<
"0.45-0.46"
<<
" "
<< (
float
)p[45] / (
float
)num_of_exp << endl;
return
0;
}
Producción:Probability of some ranges 0.50-0.51 0.0099808 0.60-0.61 0.0099719 0.45-0.46 0.009999
La probabilidad de todos los rangos es casi igual.
- a(): Devuelve el límite inferior del rango.
- b(): Devuelve el límite superior del rango.
- min(): Devuelve el valor mínimo que puede devolver la función. Para una distribución uniforme, min() y a() devuelven el mismo valor.
- max(): Devuelve el valor mínimo que la función puede devolver. Para una distribución uniforme, min() y a() devuelven el mismo valor.
- reset(): esta función restablece la distribución de modo que los siguientes valores aleatorios generados no se basen en los valores anteriores.
Ejemplo:
CPP
// C++ code to demonstrate the working of // a(), b(), min(), max(), reset() function #include <iostream> // for uniform_real_distribution function #include <random> using namespace std; int main() { double a = 0, b = 1.5; // Initializing of uniform_real_distribution class uniform_real_distribution<double> distribution(a, b); // Using a() and b() cout << "Lower Bound" << " " << distribution.a() << endl; cout << "Upper Bound" << " " << distribution.b() << endl; // Using min() and max() cout << "Minimum possible output" << " " << distribution.min() << endl; cout << "Maximum possible output" << " " << distribution.max() << endl; // Using reset function distribution.reset(); return 0; }
Lower Bound 0 Upper Bound 1.5 Minimum possible output 0 Maximum possible output 1.5
Referencia:
http://www.cplusplus.com/reference/random/uniform_real_distribution/
Publicación traducida automáticamente
Artículo escrito por AyushShukla8 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA