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

请问如何用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;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 Uni-App实现飞书授权登陆
  • ¥50 Qt应用中如何通过代码打开开发者工具devtools
  • ¥20 mpp硬解码h264转为yuv
  • ¥40 怎样批量对比两个数据库的表差异
  • ¥60 具体分析这篇MVC结构springboot框架的安利代码
  • ¥15 lettuce连接哨兵redis,主从切换异常
  • ¥15 ubuntu出现以下问题
  • ¥15 R语言 survIDINRI包已将生存时间转为数值变量,仍错误 Time variable is not numeric。
  • ¥15 在Starccm中相变材料的物理模型该如何选择?
  • ¥15 关于#android#的问题,请各位专家解答!