iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中如何使用normal_distribution高斯正态分布函数
  • 515
分享到

C++中如何使用normal_distribution高斯正态分布函数

2023-06-20 15:06:13 515人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关c++中如何使用nORMal_distribution高斯正态分布函数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。图 1 显示的是正态(或高斯)分布。它是一条连

这篇文章将为大家详细讲解有关c++中如何使用nORMal_distribution高斯正态分布函数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

图 1 显示的是正态(或高斯)分布。它是一条连续的贝尔曲线,期望两边的值是相等的,可以理解为期望就是平均值。它是一个概率分布,因此曲线下方的面积是1。正态分布是由两个参数完全定义的:期望和标准差,它们是衡量期望两边的值如何分布的一种方式。

C++中如何使用normal_distribution高斯正态分布函数
图 1 正态分布

期望和标准差分别是用希腊字母 μ 和 σ 来表示的,变量 x 有 n 个样本,这些是由下面的公式定义的:

C++中如何使用normal_distribution高斯正态分布函数

因此,期望就是值的和除以值的个数一换句话说,也就是平均值。可以通过值和期望的差值的平方子和除以 n-1,然后对结果开方来得到标准差。对于不同的期望和标准差的值,正态分布的相对宽度和高度分布曲线的变化是相当大的。但是,分布值总是如图 1 所示。这意味着,如果知道一个符合正态分布的变量的期望和标准差,例如在大量人口中个体的身高,就可以知道 95% 的人身高不超过期望的 2σ。标准正态分布的期望为 0,标准差为 1。

uniform_distribution 模板定义了可以产生随机浮点值的分布对象类型,默认是 double 类型。默认构造函数创建的是标准正态分布,因此期望是 0,方差是 1.0:

std::normal_distribution<> dist; // mu: 0 sigma: 1

下面展示了如何创建一个有特定值和标准差的正态分布:

double mu {50.0}, sigma {10.0};std::normal_distribution<> norm {mu, sigma};

这里定义了一个生成 double 值的分布对象,期望为 50.0,标准差是 10.0。为了生成值,可以将一个随机数生成器传给 norm 函数对象。例如:

std::random_device rd;std::default_random_engine rng {rd()};std::cout << "Normally distributed values: "<< norm (rng) << " " << norm (rng) << std::endl; // 39.6153 45.5608

可以通过调用对象的成员函数 mean() 和 stddev() 来获取它的期望值和标准差:

std::cout<<"mu: "<< norm.mean () << " sigma: " << norm.stddev ()<< std::endl; // mu: 50 sigma: 10

通过调用无参数的成员函数 param(),可以得到一个封装了这两个值的 param_type 对象。为了设置期望或标准差,需要将一个 param_type 对象传给成员函数 Pamm()。分布类有用来获取期望和标准差的成员,param_type 对象拥有和它们的名字相同的成员函数。下 面是一个示例:

using Params = std::normal_distribution<>::param_type; // Type alias for readabilitydouble mu {50.0}, sigma {10.0};std::normal_distribution<> norm {mu, sigma};// Create distributionauto params = norm.param(); // Get mean and standard deviationnorm.param(Params {params.mean(),params.stddev() + 5.0}); // Modify paramsstd::cout << "mu: "<< norm.mean() << " sigma: " << norm.stddev ()<< std::endl; // mu: 50 sigma: 15

这里调用无参数的 param() 来获取包含期望和方差的 param_type 对象。在第二个 param() 调用中,通过传入一个 Pams 对象将标准差增加了 5.0。

可以通过传入一个 param_type 对象作为一个分布对象调用的第二个参数来临时设置期望和标准差:

using Params = std::normal_distribution<>::param_type; // Type alias for readabilitystd::random_device rd;std::default_random_engine rng {rd()};std::normal_distribution<> norm {50.0, 10.0}; // Create distributionParams new_p {100.0, 30.0};// mu=100 sigma=30std::cout << norm(rng, new_p) << std::endl; // Generate value with new_p: 100.925std::cout << norm,mean() << " " << norm.stddev()<< std::endl;// 50 10

new_p 定义的期望和标准差只会被应用到它被作为第二个参数传入的 norm 的执行中。原始的期望和标准差会被应用到随后的没有第二个参数的 norm 调用中。

成员函数 min() 和 max() 返回的是分布可以产生的最小值和最大值。对于分布来说,这并不是特别有用。因为返回值的类型可以这样表示最大值和最小值:

std::cout << "min: " << norm.min () << " max: " << norm.max ()<< std::endl; // min:4.94066e-324 max: 1.7 9769e+308

关于C++中如何使用normal_distribution高斯正态分布函数就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: C++中如何使用normal_distribution高斯正态分布函数

本文链接: https://www.lsjlt.com/news/298085.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++中如何使用normal_distribution高斯正态分布函数
    这篇文章将为大家详细讲解有关C++中如何使用normal_distribution高斯正态分布函数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。图 1 显示的是正态(或高斯)分布。它是一条连...
    99+
    2023-06-20
  • C++ normal_distribution高斯正态分布函数的用法示例
    图 1 显示的是正态(或高斯)分布。它是一条连续的贝尔曲线,期望两边的值是相等的,可以理解为期望就是平均值。它是一个概率分布,因此曲线下方的面积是1。正态分布是由两个参数完全定义的:...
    99+
    2024-04-02
  • python中有哪些正态分布函数
    这期内容当中小编将会给大家带来有关python中有哪些正态分布函数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络...
    99+
    2023-06-14
  • Matlab正态分布常用函数normpdf怎么使用
    normpdf函数用于计算正态分布的概率密度函数值。它的语法是:y = normpdf(x, mu, sigma)其中,x是要计算概...
    99+
    2023-09-15
    Matlab
  • 如何在python中使用scipy.stats模块实现正态分布
    这篇文章给大家介绍如何在python中使用scipy.stats模块实现正态分布,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python的scipy.stats模块是连续型随机变量的公共方法,可以产生随机数,通常是以...
    99+
    2023-06-06
  • C#中静态构造函数如何使用
    C#中静态构造函数如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C#静态构造函数是一个新特性,其实好像很少用到。不过当我们想初始化一些静态变量的时候就需要用到它了。...
    99+
    2023-06-17
  • C语言动态内存分配函数如何使用
    这篇文章主要介绍“C语言动态内存分配函数如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言动态内存分配函数如何使用”文章能帮助大家解决问题。局部变量和函数的形参向栈区申请空间全局变量和st...
    99+
    2023-06-30
  • 如何使用C++中的正则表达式函数?
    如何使用C++中的正则表达式函数?正则表达式是一种强大的文本处理工具,可以用于匹配、搜索和替换文本中的模式。在C++中,我们可以使用正则表达式函数库来实现对文本的处理。本文将介绍如何在C++中使用正则表达式函数。首先,我们需要包含C++标准...
    99+
    2023-11-18
    C++正则表达式 使用C++正则 C++正则函数
  • PyTorch之torch.randn()如何创建正态分布随机数
    目录torch.randn()如何创建正态分布随机数torch之随机数生成方式1. 均匀分布2. 标准正态分布3.离散正态分布4.线性间距向量总结torch.randn()如何创建正...
    99+
    2023-02-02
    PyTorch torch.randn() torch.randn创建正态分布随机数 torch.randn正态分布随机数
  • 如何使用Go语言编写高可用的分布式函数?
    Go语言是一种非常流行的编程语言,由于其高效性、可靠性和安全性,越来越多的开发人员选择使用Go语言来构建分布式应用。在本文中,我们将介绍如何使用Go语言编写高可用的分布式函数。 什么是分布式函数? 分布式函数是一种将计算任务分解成多个小任务...
    99+
    2023-09-12
    分布式 unix 函数
  • Java分布式编程中如何使用Spring函数?
    Spring是一个开源的Java框架,它可以帮助开发人员更加快速、简便地开发Java应用程序。在分布式编程中,Spring也是一个不可或缺的工具。本文将介绍如何使用Spring函数来实现分布式编程。 一、什么是Spring函数? Spri...
    99+
    2023-09-27
    分布式 spring 函数
  • PHP中如何使用正则函数
    PHP中如何使用正则函数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。PHP正则表达式的定义: 用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式...
    99+
    2023-06-17
  • oracle中如何使用正则函数
    oracle中如何使用正则函数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用这些函数可以在字符串中搜索字符模式。例如,假设...
    99+
    2024-04-02
  • C++ 中如何使用函数?
    c++++ 中的使用函数函数是一种可重用的代码块,用于提高代码的可重用性和模块化。函数声明指定函数名称、参数类型和返回类型。函数定义提供函数体的实现。函数通过使用其名称并传递适当参数来调...
    99+
    2024-04-12
    函数 c++ 最大公约数
  • 如何在Go中实现高效的分布式函数调用?
    随着分布式应用程序的日益普及,如何高效地实现分布式函数调用成为了一个热门话题。在Go语言中,通过使用RPC(远程过程调用)机制,我们可以实现高效的分布式函数调用。本文将介绍如何在Go中使用RPC机制来实现高效的分布式函数调用。 RPC简介...
    99+
    2023-09-12
    分布式 unix 函数
  • C++分析讲解类的静态成员函数如何使用
    目录一、未完成的需求二、问题分析三、静态成员函数四、小结一、未完成的需求 统计在程序运行期间某个类的对象数目保证程序的安全性(不能使用全局变量)随时可以获取当前对象的数目 在C++分...
    99+
    2024-04-02
  • C++中如何使用字符串分割函数
    今天就跟大家聊聊有关C++中如何使用字符串分割函数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。鉴于在C++中没有可以用一个字符串来分割字符串的函数,所以特意写了一个C++字符串分割...
    99+
    2023-06-17
  • 如何在PHP中使用分布式函数实现高效的并发操作?
    在当今互联网时代,高并发操作已经成为了每个Web开发人员都需要考虑的问题。无论是从用户体验还是从服务器性能角度出发,都需要实现高效的并发操作。在PHP中,使用分布式函数可以实现高效的并发操作。本文将介绍如何在PHP中使用分布式函数实现高效的...
    99+
    2023-10-06
    分布式 函数 并发
  • 如何在Java分布式应用程序中使用Spring函数来提高性能?
    Java分布式应用程序在实际应用中经常面临性能瓶颈的挑战,而Spring函数则是提高性能的一个有效手段。本文将探讨如何在Java分布式应用程序中使用Spring函数来提高性能。 一、什么是Spring函数? Spring函数是Spring ...
    99+
    2023-09-27
    分布式 spring 函数
  • C++中如何使用动态数组
    这篇文章将为大家详细讲解有关C++中如何使用动态数组,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++动态数组相关操作代码如下:#include< iostream>...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作