m0_46523456 2021-03-14 11:41 采纳率: 0%
浏览 60

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

怎么转化成代码?

  • 写回答

1条回答 默认 最新

  • 我是一盘牛肉 新星创作者: Java技术领域 2023-08-04 11:31
    关注
    
    #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;
    }
    
    评论

报告相同问题?