首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从正态分布中抽样限定在一定的区间内,C++实现?

从正态分布中抽样限定在一定的区间内,可以使用截断(truncation)方法来实现。下面是一个使用C++实现的示例代码:

代码语言:txt
复制
#include <iostream>
#include <random>

double truncatedNormal(double mean, double stddev, double min, double max) {
    std::random_device rd;
    std::mt19937 gen(rd());
    std::normal_distribution<double> dist(mean, stddev);

    double sample;
    do {
        sample = dist(gen);
    } while (sample < min || sample > max);

    return sample;
}

int main() {
    double mean = 0.0;
    double stddev = 1.0;
    double min = -1.0;
    double max = 1.0;

    double sample = truncatedNormal(mean, stddev, min, max);

    std::cout << "Sample: " << sample << std::endl;

    return 0;
}

在上述代码中,truncatedNormal函数接受正态分布的均值(mean)、标准差(stddev)、限定区间的最小值(min)和最大值(max)作为参数。它使用std::random_device生成随机种子,并使用std::mt19937作为随机数生成器。然后,使用std::normal_distribution生成正态分布的随机数。

在抽样过程中,使用一个循环来不断生成随机数,直到生成的随机数落在指定的区间内为止。最后,返回符合要求的随机数。

在示例代码的main函数中,定义了正态分布的均值、标准差和限定区间的最小值和最大值。然后,调用truncatedNormal函数获取符合要求的随机数,并将其输出到控制台。

这是一个简单的C++实现,可以根据实际需求进行修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券