C#利用利用Random得随机数求均值、方差、正态分布的方法得随机数求均值、方差、正态分布的方法
主要介绍了C#利用Random得随机数求均值、方差、正态分布的方法,涉及C#数学运算及概率统计的相关技巧,需
要的朋友可以参考下
本文实例讲述了C#利用Random得随机数求均值、方差、正态分布的方法。分享给大家供大家参考。具体如下:
最近在做中小学试卷分析系统,其中数据的分析让自己很头疼,整个系统采用B/S架构。在分析试卷难度梯度的时候需要用到
正态分布,自己做了一些,也查阅了一些资料,终于掌握了将一组数据分析检验,最后生成正态分布。
(1)利用随机函数rand()生成(0,1)区间的100个均匀分布随机数;
(2)计算这100个均匀分布随机数的均值和方差,
(3)将这100个均匀分布的随机数,及其均值和方差保存到文本文件
首先利用“srand((unsigned)time(NULL))”语句设置产生随机数的开始点(需要包含time.h头文件);产生随机数的函数为
rand(),为了将该随机数转换为(0,1)范围内的数,利用“rand()*1.0/RAND_MAX”可实现此目的。
具体生成代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Collections;
using System.Text.RegularExpressions;
namespace random
{
classProgram
{
//求随机数平均值方法
staticdouble Ave(double[] a)
{
double sum=0;
foreach(double din a)
{
sum=sum+d;
}
doubleave=sum/a.Length;
return ave;
}
//求随机数方差方法
staticdouble Var(double[] v)
{
//double tt = 2;
//double mm = tt ^ 2;
double sum1= 0;
for (int i =0; i< v.Length; i++)
{
double temp= v[i] * v[i];
sum1 = sum1 + temp;
}
double sum =0;
foreach (double din v)
{
sum = sum + d;
}
double var =sum1 / v.Length - (sum / v.Length) * (sum / v.Length);
return var;
}
//求正态分布的随机数
staticvoidFenbu(double[] f)
{
//doublefenbu=new double[f.Length ];
for (int i =0; i< f.Length; i++)
{
double a = 0, b = 0;
a =Math.Sqrt((-2)*Math.Log(f[i], Math.E));
b = Math.Cos(2 *Math.PI * f[i]);
f[i] = a * b * 0.3 + 1;
}
}
static void Main(string[]args)
{
//生成100个(0,1)之间的随机数
Random ran = newRandom();
double[] dou= new double[100];
评论0