首页 > 解决方案 > C++ 根库 - TF1.GetRandom() 函数无法正常工作

问题描述

我将 GetRandom() 函数用于 TF1 类型(根库)函数,但无法使其正常工作。 两者都有这个例子:

TF1* f1 = new TF1("f1", "30+x", 0.2*M_PI, 0.5*M_PI);
    for(int i = 0; i < N; i++) {
        cout << f1->GetRandom(0.2*M_PI, 0.5*M_PI) << endl;
    }

在这个例子中:

TF1* f1 = new TF1("f1", "cos(x)", 0.2*M_PI, 0.5*M_PI);
    for(int i = 0; i < N; i++) {
        cout << f1->GetRandom(0.2*M_PI, 0.5*M_PI) << endl;
    }

我得到这样的输出:

1.31227
0.933722
0.915021
1.52884
0.83633
1.55911
0.73908

与我预期的值不符。在第一个示例中,我希望它输出介于 30.6 和 31.8 之间的数字,而第二个示例输出介于 0 和 0.8 之间的数字。我是否误解了 GetRandom 函数的作用或其他错误?

标签: c++root-framework

解决方案


在您的示例中,f1->GetRandom返回 range 中的值0.2*M_PI, 0.5*M_PI。每个值的密度由函数 描述f1:如果您要求GetRandom足够的值,它们的相对出现将匹配 的形状f1


推荐阅读