采用C++ TR1中的随机数发生器生成Gamma分布随机数

分类:代码, 博客, 水文, 资源 标签:

随机水文学中常会用到符合Gamma分布随机数,用于模拟一些随机的水文过程,这里水文工具集介绍一种使用C++语言的TR1新特征中的随机数发生器来产生Gamma分布随机数,当然TR1的随机数库里面还有许多生成其它分布的类(如:柏努利分布,二项分布,指数分布,几何分布,正态分布和泊松分布等),这里仅就Gamma分布进行简单介绍,其它的也很容易的,如果什么时候需要的话,也可以写成DLL或者COM以供其它语言调用的。具体产生Gamma分布随机数的源代码如下:

/*
采用CPP TR1中的随机数发生器生成Gamma分布随机数

http://www.cnhup.com

*/
#include <random> 
#include <iostream> 
 
typedef std::mt19937 Myeng; 
//可参考下:http://www.cnhup.com/index.php/archives/mersenne-twister-pseudorandom-number-generator/
typedef std::gamma_distribution<double>  Mydist; 
int main() 
{ 
    Myeng eng; 
    Mydist dist(1.5,2.5); 
    Mydist::input_type engval = eng(); 
    Mydist::result_type distval = dist(eng); 
 
    distval = distval;  // to quiet "unused" warnings 
    engval = engval; 
 
    std::cout << "alpha == " << dist.alpha() << ";beta == " << dist.beta() << std::endl; 
 
    dist.reset(); // discard any cached values 
    std::cout << "a random value == " << dist(eng) << std::endl; 
    std::cout << "a random value == " << dist(eng) << std::endl; 
    std::cout << "a random value == " << dist(eng) << std::endl; 
 
    return (0); 
} 


分类:代码, 博客, 水文, 资源 标签:

2 Responses to “采用C++ TR1中的随机数发生器生成Gamma分布随机数”

  1. lsc  on 七月 16th, 2010

    太高深了

    • CnHUP  on 七月 16th, 2010

      少来了,才几行代码呀……
      不过这个随机库还是有不少人开发的


发表评论

You must be logged in to post a comment.