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 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();
}
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();
}
下面图片第一行是 若干随机数;
第二个是随机数的 移动平均值;蓝色条 为 总体平均值。