我在理解如何在 C++ 中使用库 GSL 中的函数 gsl_histogram_pdf_sample 时遇到了一些麻烦。文档在这里,
我还不是真正的专家,所以,我想知道是否有人可以告诉我这段代码有什么问题,
#include <iostream>
#include <gsl/gsl_histogram.h>
#include <gsl/gsl_rng.h>
using namespace std;
int main()
{
// I am going to use 5 bins
size_t Bins = 5;
// These are the ranges (must be Bins + 1)
double range[6] = { 0.0, 1.0, 2.0, 3.0, 4.0, 5.0 };
// Array with probabilities
double w[5] = {0.05, 0.1, 0.3, 0.4, 1};
// Create the histogram pdf
gsl_histogram_pdf MyHistPdf;
MyHistPdf.n = Bins;
MyHistPdf.range = range;
MyHistPdf.sum = w;
const gsl_rng_type * T;
gsl_rng * r;
T = gsl_rng_default;
r = gsl_rng_alloc (T);
double u = gsl_rng_uniform(r);
cout << u << endl;
double a = gsl_histogram_pdf_sample(&MyHistPdf, u);
return 0;
}
该程序编译没有错误,但是当我运行它时,我总是收到以下错误,
gsl: /usr/src/gsl-1.16-1/src/gsl-1.16/histogram/pdf.c:46: ERROR: cannot find r in cumulative pdf
我不知道这是什么意思。