首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用随机数生成器:多实例还是单例方法?

使用随机数生成器:多实例还是单例方法?
EN

Stack Overflow用户
提问于 2014-08-18 01:37:41
回答 1查看 2.2K关注 0票数 0

我创建了一个类,可以用作一个比标准rand()更好的随机数生成器。下面我包含了类的.cpp文件,其中包含类变量std::my 19937 gen和std::uniform_real_distribution distr。

我的问题是是否有必要创建数字生成器的多个实例。例如,如果我有A和B类,而且每个类都需要在0,1范围内采样随机数,那么如果A和B各有自己的UniformNumberGenerator实例,还是应该对两个类使用一个实例?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
UniformNumberGenerator::UniformNumberGenerator(double min, double max)
{
    gen = CreateGenerator();
    distr = std::uniform_real_distribution<double>(min, max);
}

std::mt19937 UniformNumberGenerator::CreateGenerator()
{
    std::random_device rd;
    std::mt19937 result(rd());
    return result;
}

//Take a sample
double UniformNumberGenerator::operator()()
{
    return distr(gen);
}
EN

回答 1

Stack Overflow用户

发布于 2014-08-18 02:59:48

我不能根据您发布的代码来判断您的随机数生成器,但我可以说一些事情是基于哪种方法(实例化几个复制的生成器与具有单个全局生成器的),这是最好的:

  1. 如果内存很重要,那么显然您更喜欢单例方法,因为您只分配了一次内存。
  2. 除非您的生成器支持您希望用于对象的任何高级特性,比如能够在某个可自定义的发行版中生成数字,否则我认为在应用程序中没有这个生成器的多个实例的真正原因。
  3. 如果我想到在应用程序中通常如何使用随机数生成器--您很少需要调用它--我会采用单例方法。

希望这能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25360241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文