C#,《小白学程序》第十七课:随机数(Random)第四,移动平均值(Moving Average)的计算方法与代码

1 文本格式

/// <summary>

/// 《小白学程序》第十七课:随机数(Random)第四,移动平均值的计算方法与代码

/// 继续学习数据统计,移动平均值的计算方法

/// 移动平均值就是一定步长内数值的平均值,用于反映阶段性的数值变化。

/// 股票软件,金融软件及一些忽悠人的预测都是这个技术。

/// 当然移动平均值也可以用于机器人、AI等等很多正能量的事情。

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void button17_Click(object sender, EventArgs e)

{

// 生成一些随机数

int n = 60;

double\[\] temp = new doublen;

double asum = 0.0;

for (int i = 0; i < n; i++)

{

tempi = global_rnd.NextDouble() * 10.0 + 25.0;

asum += tempi;

}

// 计算平均值(总体平均值)

double aavg = asum / n;

// 保存移动平均值的数组

double\[\] ma = new doublen;

// 步长

int step = 5;

for (int i = 0; i < (n - step); i++)

{

double sum = 0.0;

for (int j = 0; j < step; j++)

{

sum += tempi + j;

}

double avg = sum / step;

mai = avg;

}

StringBuilder sb = new StringBuilder();

sb.AppendLine("<style>td { padding:0px;text-align:center;text-size:0px; } </style>");

// 显示随机数

sb.AppendLine("<table width=420 border=0 style='border-collapse:collapse;'>");

sb.AppendLine("<tr>");

for (int i = 0; i < n - step; i++)

{

sb.AppendLine("<td style='vertical-align:bottom;'><div style='width:7px;height:" + (tempi * 3) + "px;border:solid 1px #FF0000;background-color:rgb(255,255,0);'></div></td>");

}

sb.AppendLine("</tr>");

sb.AppendLine("</table>");

sb.AppendLine("<br>");

sb.AppendLine("<br>");

// 显示移动平均值

sb.AppendLine("<table width=420 border=0 style='border-collapse:collapse;'>");

sb.AppendLine("<tr>");

// 左端第一个为平均值(总体平均值)

sb.AppendLine("<td style='vertical-align:bottom;'><div style='width:7px;height:" + (aavg * 3) + "px;border:solid 2px #0000FF;background-color:rgb(255,0,255);'></div></td>");

for (int i = 0; i < n - step; i++)

{

sb.AppendLine("<td style='vertical-align:bottom;'><div style='width:7px;height:" + (mai * 3) + "px;border:solid 1px #FF0000;background-color:rgb(255,255,0);'></div></td>");

}

// 右端第一个也是平均值(总体平均值)

sb.AppendLine("<td style='vertical-align:bottom;'><div style='width:7px;height:" + (aavg * 3) + "px;border:solid 2px #0000FF;background-color:rgb(255,0,255);'></div></td>");

sb.AppendLine("</tr>");

sb.AppendLine("</table>");

webBrowser1.DocumentText = sb.ToString();

}

2 代码格式

cs 复制代码
/// <summary>
/// 《小白学程序》第十七课:随机数(Random)第四,移动平均值的计算方法与代码
/// 继续学习数据统计,移动平均值的计算方法
/// 移动平均值就是一定步长内数值的平均值,用于反映阶段性的数值变化。
/// 股票软件,金融软件及一些忽悠人的预测都是这个技术。
/// 当然移动平均值也可以用于机器人、AI等等很多正能量的事情。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button17_Click(object sender, EventArgs e)
{
    // 生成一些随机数
    int n = 60;
    double[] temp = new double[n];
    double asum = 0.0;
    for (int i = 0; i < n; i++)
    {
        temp[i] = global_rnd.NextDouble() * 10.0 + 25.0;
        asum += temp[i];
    }
    // 计算平均值(总体平均值)
    double aavg = asum / n;

    // 保存移动平均值的数组
    double[] ma = new double[n];
    // 步长
    int step = 5;
    for (int i = 0; i < (n - step); i++)
    {
        double sum = 0.0;
        for (int j = 0; j < step; j++)
        {
            sum += temp[i + j];
        }
        double avg = sum / step;
        ma[i] = avg;
    }

    StringBuilder sb = new StringBuilder();
    sb.AppendLine("<style>td { padding:0px;text-align:center;text-size:0px; } </style>");

    // 显示随机数
    sb.AppendLine("<table width=420 border=0 style='border-collapse:collapse;'>");
    sb.AppendLine("<tr>");
    for (int i = 0; i < n - step; i++)
    {
        sb.AppendLine("<td style='vertical-align:bottom;'><div style='width:7px;height:" + (temp[i] * 3) + "px;border:solid 1px #FF0000;background-color:rgb(255,255,0);'></div></td>");
    }
    sb.AppendLine("</tr>");
    sb.AppendLine("</table>");
    sb.AppendLine("<br>");
    sb.AppendLine("<br>");

    // 显示移动平均值
    sb.AppendLine("<table width=420 border=0 style='border-collapse:collapse;'>");
    sb.AppendLine("<tr>");
    // 左端第一个为平均值(总体平均值)
    sb.AppendLine("<td style='vertical-align:bottom;'><div style='width:7px;height:" + (aavg * 3) + "px;border:solid 2px #0000FF;background-color:rgb(255,0,255);'></div></td>");
    for (int i = 0; i < n - step; i++)
    {
        sb.AppendLine("<td style='vertical-align:bottom;'><div style='width:7px;height:" + (ma[i] * 3) + "px;border:solid 1px #FF0000;background-color:rgb(255,255,0);'></div></td>");
    }
    // 右端第一个也是平均值(总体平均值)
    sb.AppendLine("<td style='vertical-align:bottom;'><div style='width:7px;height:" + (aavg * 3) + "px;border:solid 2px #0000FF;background-color:rgb(255,0,255);'></div></td>");
    sb.AppendLine("</tr>");
    sb.AppendLine("</table>");

    webBrowser1.DocumentText = sb.ToString();

}

下面图片第一行是 若干随机数;

第二个是随机数的 移动平均值;蓝色条 为 总体平均值。

相关推荐
晨曦中的暮雨4 分钟前
Golang速通(Javaer版)
java·开发语言·后端·golang
小小编程路20 分钟前
Python 还有容器类型互转、进制转换、字符编码转换
开发语言·windows·python
想吃火锅100533 分钟前
【leetcode】1.两数之和js版
javascript·算法·leetcode
qeen8733 分钟前
【C++】类与对象之类的默认成员函数(二)
android·c语言·开发语言·c++·笔记·学习
CRMEB系统商城39 分钟前
CRMEB多商户系统(Java)v2.3公测版发布
java·开发语言·人工智能·小程序·开源·php
动能小子ohhh1 小时前
DocForge平台的设计与开发--文件上传接口的实现
开发语言·人工智能·python·langchain·ocr·fastapi
满天星83035771 小时前
【Qt】信号和槽(二) (自定义信号和槽)
开发语言·数据库·qt
net3m331 小时前
一阶软件低通滤波器算法
人工智能·算法
超哥--1 小时前
B站视频内容智能分析系统(三):B站视频自动采集
java·开发语言·音视频·ai编程