【问题标题】:how to generate a trimodal distribution (mixture) in c++ with random library?如何使用随机库在 C++ 中生成三峰分布(混合)?
【发布时间】:2015-01-21 05:49:03
【问题描述】:

我正在使用随机 c++11 库来生成随机数。现在我想生成三个正态分布的混合,平均值为 50,100 和 150,std dev 10。我该怎么做? 谢谢你。 总帐

【问题讨论】:

  • 这是一个有趣的问题。你问的是通用算法吗?或者您是否要求正确的语法来实现已知算法。这是作业问题吗?

标签: c++11 random normal-distribution


【解决方案1】:

std::lib 中没有直接支持多模式分布的 API。您必须根据标准提供的单峰正态分布构建三峰分布:

template <class RealType = double>
class normal_distribution;

【讨论】:

    【解决方案2】:

    我通过在 3 个正态分布之间随机选择来做到这一点,

    喜欢:

    a=rand(1,3)
    switch(a)
    case 1:
      res=rand_from_first_normal_distribution();
    case 2:
      res=rand_from_second_normal_distribution();
    case 3:
      res=rand_from_third_normal_distribution();
    

    无论如何,这门课程的截止日期已经延长到 2 月 16 日,所以不要担心 :)

    【讨论】:

    • 从混合分布生成随机样本时,这对我有用。在估计实际的混合分布函数时它不起作用。但是它投了反对票 - 如果您投反对票,请添加评论,让每个人都知道您认为答案不好的原因。
    猜你喜欢
    • 1970-01-01
    • 2020-05-01
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    相关资源
    最近更新 更多