nop*_*eva 3 c c++ random c++11
我需要生成从范围内的随机整数,发现很有趣的东西,讨论在这里通过了答案@Walter.但是,它是C++11标准的,我需要使用C,有没有办法从C拨打电话?我在这里重现他的答案:
#include <random>
std::random_device rd; // only used once to initialise (seed) engine
std::mt19937 rng(rd()); // random-number engine used (Mersenne-Twister in this case)
std::uniform_int_distribution<int> uni(min,max); // guaranteed unbiased
auto random_integer = uni(rng);
Run Code Online (Sandbox Code Playgroud)
您不能在C中使用C++类,但可以将C++功能包装在函数中,这些函数可以从C调用,例如在getrandom.cxx中:
#include <random>
static std::random_device rd;
static std::mt19937 rng(rd());
static std::uniform_int_distribution<int> uni(min,max);
extern "C" int get_random()
{
return uni(rng);
}
Run Code Online (Sandbox Code Playgroud)
这是一个C++模块,它导出带有C链接的get_random函数(也就是说,可以从C调用.你在getrandom.h中声明它:
extern "C" int get_random();
Run Code Online (Sandbox Code Playgroud)
并可以从您的C代码中调用它.
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |