gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:16:28 25 4
gpt4 key购买 nike

这是另一个问题 ( 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com