std:: piecewise_linear_distribution
|
Défini dans l'en-tête
<random>
|
||
|
template
<
class
RealType
=
double
>
class piecewise_linear_distribution ; |
(depuis C++11) | |
std::piecewise_linear_distribution
produit des nombres flottants aléatoires, qui sont distribués selon une fonction de densité de probabilité linéaire dans chacun des plusieurs sous-intervalles
[b
i
, b
i+1
)
. La distribution est telle que la densité de probabilité à chaque limite d'intervalle est exactement la valeur prédéfinie
p
i
.
| b i+1 -x |
| b i+1 -b i |
| x-b i |
| b i+1 -b i |
| 1 |
| 2 |
L'ensemble des limites d'intervalle b i et l'ensemble des poids aux limites w i sont les paramètres de cette distribution.
std::piecewise_linear_distribution
satisfait toutes les exigences de
RandomNumberDistribution
.
Table des matières |
Paramètres du modèle
| RealType | - | Le type de résultat généré par le générateur. L'effet est indéfini si ce n'est pas l'un des float , double , ou long double . |
Types membres
| Type de membre | Définition |
result_type
(C++11)
|
RealType |
param_type
(C++11)
|
le type du jeu de paramètres, voir RandomNumberDistribution . |
Fonctions membres
|
(C++11)
|
construit une nouvelle distribution
(fonction membre publique) |
|
(C++11)
|
réinitialise l'état interne de la distribution
(fonction membre publique) |
Génération |
|
|
(C++11)
|
génère le prochain nombre aléatoire dans la distribution
(fonction membre publique) |
Caractéristiques |
|
|
(C++11)
|
retourne les paramètres de la distribution
(fonction membre publique) |
|
(C++11)
|
obtient ou définit l'objet paramètre de distribution
(fonction membre publique) |
|
(C++11)
|
retourne la valeur potentiellement générée minimale
(fonction membre publique) |
|
(C++11)
|
retourne la valeur potentiellement générée maximale
(fonction membre publique) |
Fonctions non membres
|
(C++11)
(C++11)
(supprimé en C++20)
|
compare deux objets de distribution
(fonction) |
|
(C++11)
|
effectue des opérations d'entrée/sortie sur flux pour une distribution de nombres pseudo-aléatoires
(modèle de fonction) |
Exemple
#include <iomanip> #include <iostream> #include <map> #include <random> #include <string> int main() { std::random_device rd; std::mt19937 gen{rd()}; // augmenter la probabilité de 0 à 5 // rester constante de 5 à 10 // diminuer de 10 à 15 au même taux std::vector<double> i{0, 5, 10, 15}; std::vector<double> w{0, 1, 1, 0}; std::piecewise_linear_distribution<> d{i.begin(), i.end(), w.begin()}; std::map<int, int> hist; for (int n{}; n < 1e4; ++n) ++hist[d(gen)]; for (auto [x, y] : hist) std::cout << std::setw(2) << std::setfill('0') << x << ' ' << std::string(y / 100, '*') << '\n'; }
Sortie possible :
00 * 01 *** 02 **** 03 ****** 04 ********* 05 ********* 06 ********* 07 ********** 08 ********* 09 ********** 10 ********* 11 ******* 12 **** 13 *** 14 *