目前我正在随机使用boost,但有可能我会将它切换到其他库或我自己的代码(在某些部分),所以我想将它包装在一个类中,然后当我需要一些随机数时(或别的东西)我会从这个类中得到它,而不是提升本身。问题是 - 我应该怎么做?我应该将此类设为单例类还是静态类或其他类?
(我想到了一门课,因为我只需要播种一次,但从不同的地方获得功能,我不想在 main.cpp 中播种)
PS如果有一种方法可以在没有课程的情况下做到这一点,它也会这样做。
我会建议做一个普通班。这样,用户可以创建一个对象,设置一些参数,然后查询值,如本示例用例所示:
{
YourRandomGenerator random;
random.SetRange(0, 1000);
for (int i = 0; i < 1000; ++i)
CallUserFunction(random.Next());
}
这种方法可以为不同的分布创建不同的随机生成器。通过不同的类(YourUniformRandomGenerator,YourGaussDistributedRandomGenerator,...)或通过参数化方法(SetUniform,SetGauss,...)。如果您只想播种一次(为什么要这样做?),所有这些生成器类都可以访问相同的静态增强随机生成器。
我应该将此类设为单例类还是静态类或其他类?
有两种规范的方法:
这两种方法都允许避免在头文件中公开实现。
如果有一种方法可以在没有类的情况下做到这一点,它也会这样做。
如果在调用之间没有必须保留的状态,则可以使用非内联函数。