C ++根库-TF1.GetRandom()函数无法正常工作

时间:2019-12-22 12:11:02

标签: c++ root-framework

我正在将GetRandom()函数用于TF1类型(Root library)函数,但无法使其正常工作。 两者都带有此示例:

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函数的作用还是其他错误?

2 个答案:

答案 0 :(得分:0)

正如@walnut所说,GetRandom返回返回具有曲线指定分布的随机值,而不是将对应公式的值转换为随机“ x”值。问题解决了

答案 1 :(得分:0)

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