Med*_* Rb 3 c++ random probability c++11
我想知道我可以在给定范围内生成随机数(C++ 11)并控制某些数字的可能性.假设我生成0到4之间的随机数,数字"1"可能会在集合中绘制50%.
如果范围是[0,n),那么您可以使用std::discrete_distribution.
对于将1设置为50%的具体示例,您可以执行以下操作:
#include <iostream>
#include <random>
int main() {
std::random_device rd;
std::mt19937 gen(rd());
std::discrete_distribution<> d({10, 50, 30, 10});
for(unsigned i = 0; i < 10; ++i) {
std::cout << d(gen) << '\n';
}
}
Run Code Online (Sandbox Code Playgroud)
还有,你可以使用像其他抽样分布std::piecewise_constant_distribution和std::piecewise_linear_distribution.与<random>标题中的许多其他不同分布一起.
| 归档时间: |
|
| 查看次数: |
206 次 |
| 最近记录: |