对于C++,请使用标准<random>库.正如James Kanze建议的那样,每个线程的不同生成器可能是最好的,并且它们并不难做出:
#include <random>
std::mt19937 make_seeded_engine() {
std::random_device r;
std::seed_seq seed{r(), r(), r(), r(), r(), r(), r(), r()};
return std::mt19937(seed);
}
std::async([](){
auto rand = std::bind(std::uniform_real_distribution<>(),
make_seeded_engine());
for(int i = 0; i < 100; ++i)
rand();
});
Run Code Online (Sandbox Code Playgroud)
我只是std::async()用来表明生成器是在线程中创建的.MSVC 10没有std::async()我不想,但确实有<random>,所以你只需使用你已经使用的任何线程库就可以做同样的事情.
| 归档时间: |
|
| 查看次数: |
4288 次 |
| 最近记录: |