std::piecewise_linear_distribution
来自cppreference.com
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
| Defined in header <random>
|
||
| template< class RealType = double > class piecewise_linear_distribution; |
(C++11 起) | |
std::piecewise_linear_distribution produces random floating-point numbers, which are distributed according to a linear probability density function within each of the several subintervals [b
i, b
i+1). The distribution is such that the probability density at each interval boundary is exactly the predefined value p
i.
i≤x<b
i+1 is p
i
| b i+1-x |
| b i+1-b i |
i+1
| x-b i |
| b i+1-b i |
k are calculated as w
k/S where S is the sum of all None
| 1 |
| 2 |
k+w
k+1)(b
k+1−b
k).
The set of interval boundaries b
i and the set of weights at boundaries w
i are the parameters of this distribution.
[编辑] 会员类型
| 会员类型
Original: Member type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
result_type
|
RealType |
param_type
|
的类型的参数集,未指定
Original: the type of the parameter set, unspecified The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
[编辑] 成员函数
| 构建新的分配 Original: constructs new distribution The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
| 复位内部状态的分布 Original: resets the internal state of the distribution The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
Original: Generation The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |
| 生成下一个随机数的分布 Original: generates the next random number in the distribution The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
Original: Characteristics The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |
| 获得间隔边界的列表 Original: obtains the list of interval boundaries The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
| 获得的列表在间隔边界的概率密度 Original: obtains the list of probability densities at interval boundaries The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
| 获取或设置的分布参数对象 Original: gets or sets the distribution parameter object The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
| 返回的最低可能产生的价值 Original: returns the minimum potentially generated value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
| 返回的最大潜在价值 Original: returns the maximum potentially generated value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
[编辑] 非成员函数
| 比较两个分布对象 Original: compares two distribution objects The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (函数) | |
| 执行流输入和输出的伪随机数分布 Original: performs stream input and output on pseudo-random number distribution The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (函数) | |
[编辑] 为例
#include <iostream> #include <iomanip> #include <string> #include <map> #include <random> int main() { std::random_device rd; std::mt19937 gen(rd()); // increase the probability from 0 to 5 // remain flat from 5 to 10 // decrease from 10 to 15 at the same rate 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=0; n<10000; ++n) { ++hist[d(gen)]; } for(auto p : hist) { std::cout << std::setw(2) << p.first << ' ' << std::string(p.second/100, } }
Output:
0 * 1 *** 2 **** 3 ****** 4 ********* 5 ********* 6 ********* 7 ********** 8 ********* 9 ********** 10 ********* 11 ******* 12 **** 13 *** 14 *