图书馆中随机数生成器使用的最佳实践/习语

时间:2015-01-17 08:19:13

标签: c++ c++11 prng

假设我正在编写一个使用C ++ 11的prng功能的库。库中的每个函数/对象/文件是否应该初始化自己的随机数生成器?我打算在命名空间中初始化一个静态std :: mt19937,之后只使用那个,但代码将不那么模块化。这是推荐的吗?

1 个答案:

答案 0 :(得分:2)

它不是线程安全的,所以如果您要生成多个线程,请创建更多MT19937 prng实例。否则,这完全取决于你。除此之外的任何答案都将主要以意见为基础。

如果你没有内存限制,为什么要尝试优化某些东西,比你的应用程序的prng实例数量微不足道?简单回答:做什么使您的程序最容易编写,调试和管理。

一种可能的解决方案是在每个对象中保存对MT19937的引用,并通过锁定构造控制对它的访问,以使其成为线程安全的。

相关问题