当我们在C#中使用随机数生成器时,我们可以定义一个变量
private Random _rndGenerator;
Run Code Online (Sandbox Code Playgroud)
在课堂上然后打电话
_rndGenerator = new Random(seed);
Run Code Online (Sandbox Code Playgroud)
正确地在类的构造函数中.
我的问题是:
什么是这种定义的C++等价物(即类中的RNG).我认为这不是一个正确的使用方法
srand((unsigned int)seed);
Run Code Online (Sandbox Code Playgroud)
对?
R. *_*des 14
C++ 11具有更强大的随机数生成功能.这是一个例子:
#include <random>
#include <functional>
std::size_t get_seed(); // whatever is the preferred way of obtaining a seed
typedef std::mt19937 engine_type; // a Mersenne twister engine
std::uniform_int_distribution<engine_type::result_type> udist(0, 200);
engine_type engine;
int main()
{
// seed rng first:
engine_type::result_type const seedval = get_seed();
engine.seed(seedval);
// bind the engine and the distribution
auto rng = std::bind(udist, engine);
// generate a random number
auto random_number = rng();
return random_number;
}
Run Code Online (Sandbox Code Playgroud)
获得种子的方法有很多种.<random>提供对std::random_device类的一些硬件熵的潜在访问,您可以使用它来为您的PRNG播种.
std::size_t get_seed() {
std::random_device entropy;
return entropy();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2619 次 |
| 最近记录: |