首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用std::normal_distribution

如何使用std::normal_distribution
EN

Stack Overflow用户
提问于 2016-07-07 19:57:13
回答 1查看 20.9K关注 0票数 8

我是一个经验丰富的C程序员,偶尔会被迫使用一点C++。

我需要从正态分布中生成具有各种均值和方差的随机数。如果我有一个名为normal(float mean, float var)的C函数来完成这项工作,那么我可以编写以下代码:

代码语言:javascript
复制
int i;
float sample;
for(i = 0;i < 1000;i++)
{
  sample = normal(mean[i],variance[i]);
  do_something_with_this_value(sample);
}

请注意,i的每个值都有不同的均值和方差。

C不包含一个叫做normal的函数,但是C++包含了,实际上它叫做std::normal_distribution。不幸的是,我的C++不足以理解文档中的语法。谁能告诉我如何使用std::normal_distribution来实现我的C代码的功能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-07 20:10:53

std::normal_distribution不是函数,而是模板类

你可以这样使用它:

代码语言:javascript
复制
#include <random>

int main(int, char**)
{
    // random device class instance, source of 'true' randomness for initializing random seed
    std::random_device rd; 

    // Mersenne twister PRNG, initialized with seed from previous random device instance
    std::mt19937 gen(rd()); 
    
    int i;
    float sample;
    for(i = 0; i < 1000; ++i)
    {
        // instance of class std::normal_distribution with specific mean and stddev
        std::normal_distribution<float> d(mean[i], stddev[i]); 

        // get random number with normal distribution using gen as random source
        sample = d(gen); 

        // profit
        do_something_with_this_value(sample); 
    }
    return 0;
}
票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38244877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档