请问如何用C++生成符合三角分布的随机数,最小值a,最大值b,最可能的值c

怎么转化成代码?


#include <iostream>
#include <random>

double generateTriangularRandom(double min, double max, double mode) {
    double u = std::generate_canonical<double, std::numeric_limits<double>::digits>(std::default_random_engine{});
    double f = (mode - min) / (max - min);
    
    if (u < f) {
        return min + std::sqrt(u * (max - min) * (mode - min));
    }
    else {
        return max - std::sqrt((1 - u) * (max - min) * (max - mode));
    }
}

int main() {
    double a = 1.0;     // 最小值
    double b = 10.0;    // 最大值
    double c = 5.0;     // 最可能的值

    // 生成随机数
    double randomValue = generateTriangularRandom(a, b, c);

    // 打印结果
    std::cout << "Random value: " << randomValue << std::endl;

    return 0;
}