统计分布类型的 C++ 模板用法

标签 c++ class templates montecarlo

这是另一个问题 ( https://stackoverflow.com/questions/10712659/c-class-design-for-monte-carlol-simulation ) 的后续

我计划使用模板实现一个统计分布类。 我想让 Distribution 成为实体类的属性。此 Distribution 类可以采用几种不同的形式 - TriangleDistribution、NormalDistribution 和 WeightedDistribution,但这些仅在运行时已知。他们共享大多数方法,但每种类型也可能有一些自定义方法,例如。为 NormalDistribution 设置 Mean,为 WeightedDistribution 设置权重。

据我了解,C++ 模板指的是一种类型,然后用于确定要使用的实现。有人建议我使用模板实现不同的分布类型。

虽然我认为我理解 C++ 模板的概念,但我不确定我将如何实现它们来解决这个分布问题。我是否使用模板特化创建如下内容?:

template <WeightedDistribution>
class Distribution {
    WeightedDistribtion wd;
  public:
    Distribution () {}
    double sample () {
      // Custom implementation of sample
      // for weighted distribution
    }
};

// class template specialization:
template <>
class Distributionr <NormalDistribution> {
    NormalDistribtion nd;
  public:
    Distribution () {}
    double sample ()
    {
      // Custom implementation of sample for 
      // a normal distribution
    }
};

这将需要为每种分发类型创建大量类型。 TIA 伙计们。 皮特

最佳答案

检查 Boost 是如何做到的:http://www.boost.org/doc/libs/1_49_0/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists.html

如果足够幸运,您可能根本不需要实现任何东西。

关于统计分布类型的 C++ 模板用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10763046/

相关文章:

C++ 要求所有声明都有类型说明符

python - 在python中访问实例变量

class - Octave 类成员变量更改不起作用

用于包装任意函数的 C++ 模板类

c++ - 如何使用 C++ 获取 Windows 上已安装字体的列表,包括字体样式

C++ Setprecision 返回错误

c++ - fork 并执行许多不同的进程,并从每个进程中获取结果

c# - FileDialog 找不到方法 ShowDialog()

html - landingspage 的 CSS 不断被覆盖?

c++ - 我可以专门研究前向声明的模板吗?