C#,《小白学程序》第十八课:随机数(Random)第五,方差及标准方差(标准差)的计算方法与代码

1 文本格式


/// <summary>
/// 《小白学程序》第十八课:随机数(Random)第五,方差及标准方差(标准差)的计算方法与代码
/// 方差 = SUM((Xi - X)^2 ) / n  i=0...n-1 X = Average of X[i]
/// 方差是 (各数值减去平均值)的平方 之和,再除以个数。
/// 方差的平方 = 标准差,反之,开平方即可。
/// 本课是为了验证前面的正态分布函数。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button18_Click(object sender, EventArgs e)
{
    // 随机数个数
    int m = 50000;
    // 随机数的范围(0---1023)
    int n = 1024;
    int[] num = new int[m];
    int i = 0;
    while (i < m)
    {
        // 按正太分布生成随机数
        // 平均值 = 0.5 * n
        // 标准差 = 0.1 * n
        int a = (int)(Rand(0.5, 0.1) * n);

        if (a < 0) continue;
        if (a >= n) continue;
        num[i++] = a;
    }

    // 计算平均值
    double sum = 0.0;
    for (int j = 0; j < m; j++)
    {
        sum += num[j];
    }
    double avg = sum / (double)m;

    // 计算方差
    double delta = 0.0;
    for (int j = 0; j < m; j++)
    {
        // 原始写法
        //delta = delta + (num[j] - avg) * (num[j] - avg);
        // 另一种写法
        delta += Math.Pow((num[j] - avg), 2);
    }
    // 方差
    double variance_1 = delta / (double)m;
    // 标准差
    double standard_variance_1 = Math.Sqrt(delta / (double)(m)) / (double)n;

    #region 更严肃的算法,应该先进行数据规范化,
    // 将数据规整到(0 --- 1.0)再计算方差等等。
    double[] xnum = new double[m];
    for (int j = 0; j < m; j++)
    {
        xnum[j] = num[j] / (double)n;
    }
    // 均值也需要规范化
    avg /= n;
    // 计算方差
    delta = 0.0;
    for (int j = 0; j < m; j++)
    {
        delta += Math.Pow((xnum[j] - avg), 2.0);
    }
    double standard_variance_2 = Math.Sqrt(delta / (double)(m));
    #endregion

    StringBuilder sb = new StringBuilder();
    sb.AppendLine("平均值=" + avg + "<br>");
    sb.AppendLine("方差= " + variance_1 + "<br>");
    sb.AppendLine("标准方差=" + standard_variance_1 + "<br>");
    sb.AppendLine("标准方差=" + standard_variance_2 + " (规范数据后计算)<br>");
    webBrowser1.DocumentText = sb.ToString();
}
 

2 代码格式


/// <summary>
/// 《小白学程序》第十八课:随机数(Random)第五,方差及标准方差(标准差)的计算方法与代码
/// 方差 = SUM((Xi - X)^2 ) / n  i=0...n-1 X = Average of X[i]
/// 方差是 (各数值减去平均值)的平方 之和,再除以个数。
/// 方差的平方 = 标准差,反之,开平方即可。
/// 本课是为了验证前面的正态分布函数。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button18_Click(object sender, EventArgs e)
{// 随机数个数int m = 50000;// 随机数的范围(0---1023)int n = 1024;int[] num = new int[m];int i = 0;while (i < m){// 按正太分布生成随机数// 平均值 = 0.5 * n// 标准差 = 0.1 * nint a = (int)(Rand(0.5, 0.1) * n);if (a < 0) continue;if (a >= n) continue;num[i++] = a;}// 计算平均值double sum = 0.0;for (int j = 0; j < m; j++){sum += num[j];}double avg = sum / (double)m;// 计算方差double delta = 0.0;for (int j = 0; j < m; j++){// 原始写法//delta = delta + (num[j] - avg) * (num[j] - avg);// 另一种写法delta += Math.Pow((num[j] - avg), 2);}// 方差double variance_1 = delta / (double)m;// 标准差double standard_variance_1 = Math.Sqrt(delta / (double)(m)) / (double)n;#region 更严肃的算法,应该先进行数据规范化,// 将数据规整到(0 --- 1.0)再计算方差等等。double[] xnum = new double[m];for (int j = 0; j < m; j++){xnum[j] = num[j] / (double)n;}// 均值也需要规范化avg /= n;// 计算方差delta = 0.0;for (int j = 0; j < m; j++){delta += Math.Pow((xnum[j] - avg), 2.0);}double standard_variance_2 = Math.Sqrt(delta / (double)(m));#endregionStringBuilder sb = new StringBuilder();sb.AppendLine("平均值=" + avg + "<br>");sb.AppendLine("方差= " + variance_1 + "<br>");sb.AppendLine("标准方差=" + standard_variance_1 + "<br>");sb.AppendLine("标准方差=" + standard_variance_2 + " (规范数据后计算)<br>");webBrowser1.DocumentText = sb.ToString();
}

3 计算结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/103413.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

激光切割机在船舶行业的的应用有哪些

我国享有世界工厂的美誉&#xff0c;是全球制造业的主力。然而&#xff0c;在船舶制造的关键技术领域&#xff0c;我国的研发投入不足&#xff0c;技术进步仍滞后&#xff0c;我国高端船舶制造的实力仍显不足。 在我国制造业全面复苏的当前背景下&#xff0c;“精准制作”正构成…

CRM软件系统能否监控手机的使用

CRM可以监控手机吗&#xff1f;答案是不可以。CRM是一款帮助企业优化业务流程&#xff0c;提高销售效率的工具。例如Zoho CRM&#xff0c;最多也就是听一下销售的通话录音&#xff0c;却不可以监控手机&#xff0c;毕竟CRM不是一款监控软件。 CRM的主要作用有以下几点&#xf…

专业的批量剪辑软件推荐,在哪可以免费下载?免费吗?

今天推荐一款适合广大短视频创作者使用的专业的批量剪辑软件&#xff0c;它叫做超级编导批量剪辑软件&#xff0c;进入超级编导官网就可以立即免费下载&#xff0c;同时该软件支持免费试用。 不管你是做电商带货种草视频、本地生活推广视频&#xff0c;还是企业拓客类的获客视频…

PHP表单token验证防CSRF攻击

在PHP中&#xff0c;表单token是一种安全机制&#xff0c;用于防止跨站请求伪造&#xff08;CSRF&#xff09;攻击。 CSRF攻击是一种利用用户身份在未经授权的情况下执行非法操作的攻击方式。 表单token的原理是在表单中生成一个随机的token&#xff0c;并将其存储在服务器端…

微软研究院团队获得首届AI药物研发算法大赛总冠军

编者按&#xff1a;AI 药物研发是人工智能未来应用的重要方向之一。自新冠病毒&#xff08;SARS-CoV-2&#xff09;首次爆发以来&#xff0c;新冠病毒的小分子药物研发备受关注&#xff0c;于近期举行的首届 AI 药物研发算法大赛便聚焦于此。在比赛中&#xff0c;来自微软研究院…

ant-design-vue组件的upload上传头像上传三次的问题(图片多次上传问题)

问题描述 使用upload组件时&#xff0c;发现上传方法会被调用3次&#xff0c;对于上传单张图片来说这似乎没什么问题&#xff1b; 但是使用fileList参数时&#xff0c;就会发现即使你只上传了一张图片&#xff0c;但是处理后的图片为三张重复图片&#xff0c;这样的话如何匹配…

微服务井喷时代,我们如何规模化运维?

随着云原生技术发展及相关技术被越来越多运用到公司生产实践当中&#xff0c;有两种不可逆转的趋势&#xff1a; 1、微服务数量越来越多。原来巨型单体服务不断被拆解成一个个微服务&#xff0c;在方便功能复用及高效迭代的同时&#xff0c;也给运维带来了不少挑战&#xff1a;…

iOS系统下轻松构建自动化数据收集流程

在当今信息爆炸的时代&#xff0c;我们经常需要从各种渠道获取大量的数据。然而&#xff0c;手动收集这些数据不仅耗费时间和精力&#xff0c;还容易出错。幸运的是&#xff0c;在现代科技发展中有两个强大工具可以帮助我们解决这一问题——Python编程语言和iOS设备上预装的Sho…

MAC终端美化

先看看效果&#xff1a; 1.安装on-my-zsh 打开终端&#xff0c;输出&#xff1a; sh -c "$(curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh)"安装过程中如果出现了链接超时的错误&#xff0c;不要慌&#xff0c;就再来一次&#x…

17 mysql global_variables session_variables

前言 这是一个关于 mysql 中的一些配置的探索 起因是需要 看一下 mysql 自增长的实现, 这里面涉及到两个变量 auto_increment_increment, auto_increment_offset, 然后 需要探索一下 这两个变量的来历 然后 就有了这里的相关介绍 global_variables 的初始化 global_va…

核货宝:收银系统后台一般是怎样的,有哪些功能

收银系统后台是一个重要的管理工具&#xff0c;它为企业提供了对收银机的全面控制和配置。收银系统后台是一个用于管理和配置收银机的软件界面。它通常由以下几个主要部分组成&#xff1a; 1. 登录和权限管理 收银系统后台需要一个安全的登录系统&#xff0c;以确保只有授权人…

群晖(Synology)NAS 后台安装 Docker 后配置 PostgreSQL

群晖&#xff08;Synology&#xff09;NAS 的后台在新版本对 Docker 不再称为 Docker&#xff0c;现在改称为 Container Manager 了。 单击进入后运行 Container Manager。 PostgreSQL 容器 针对 PostgreSQL 的容器&#xff0c;我们选择容器后&#xff0c;如果你已经安装了 P…