`
zhangziyangup
  • 浏览: 1187248 次
文章分类
社区版块
存档分类
最新评论

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个(01)之间的随机数

Random ran = newRandom();
double[] dou= new double[100];
for(int i=0;i<dou.Length;i++)
{
dou[i]= ran.NextDouble();

}

//调用Ave方法、Var方法求得随机数均值和方差

doubleavenum = Ave(dou);
doublevarnum = Var(dou);

//写入文件

//
100个随机数,均值,方差保存到文件“d:\SourceData.txt”
stringDatapath = (@"d:\SourceData.txt");

FileStream fs = new FileStream(Datapath,FileMode.Create);
StreamWriter sw = newStreamWriter(fs);

for (int j =0; j< dou.Length;j++ )
{
sw.WriteLine(dou[j]);

}

sw.Write("100个随机数均值和方差分别是{0}{1}",avenum,varnum);
sw.Close();


//读取数据文件“d:
\SourceData.txt”
FileStream fs1= new FileStream(Datapath, FileMode.Open);
StreamReader sr = newStreamReader(fs1);
string temp=null;
string str =null;
while((temp=sr.ReadLine())!=null)
{
str = str+temp+"";
}

//对数组进行分割
Regax
Regex re = newRegex(" ");
string[]str1=re.Split(str);
double[]nums=newdouble[str1.Length-2];

for(int i=0;i<str1.Length-2;i++)
{

nums[i]=Convert.ToDouble(str1[i]);
}

//调用正态分布随机函数,求均值和方差

Fenbu(nums);
doubleaveresult= Ave(nums);
doublevarresult = Var(nums);

//写入文件

//
100个随机数,均值,方差保存到文件“d:\ResultData.txt”
stringResultpath = (@"d:\ResultData.txt");

FileStream fs2 = newFileStream(Resultpath, FileMode.Create);
StreamWriter sw1 = newStreamWriter(fs2);

for (int j =0; j< nums.Length; j++)
{
sw1.WriteLine(nums[j]);

}

sw1.Write("100个随机数均值和方差分别是{0}{1}",averesult, varresult);
sw1.Close();

Console.ReadKey();

}
}
}


分享到:
评论

相关推荐

    C#利用Random得随机数求均值、方差、正态分布的方法

    本篇文章将深入探讨如何使用C#的`Random`类来生成随机数,并计算这些随机数的均值、方差,以及如何通过这些数据构建正态分布。 首先,`Random`类是C#内置的用于生成随机整数或浮点数的工具。创建一个`Random`对象后...

    根据平均值和标准差生成符合正态分布的随机数

    4. **编程实现**:在Python中,我们可以使用`numpy`库的`random.normal`函数来直接生成符合正态分布的随机数,无需手动进行Box-Muller变换。该函数接受平均值和标准差作为参数,如`numpy.random.normal(loc=μ, ...

    使用C语言产生正态分布的随机数的源代码

    为了验证随机数符合正态分布,可以进一步使用`normfit`函数进行拟合,获取理论上的均值和标准差,以及`normplot`函数创建正态概率图,对比实际数据与理论正态分布的吻合程度。 总的来说,这个压缩包包含了一个C程序...

    C#模拟实现正态分布,计算及绘画源码

    在C#中,我们可以利用.NET框架中的`System.Random`类生成随机数,但这个类生成的是均匀分布的随机数,而非正态分布。要生成正态分布的随机数,我们通常会采用Box-Muller变换或者Ziggurat算法。Box-Muller变换通过两...

    c# 正态分布代码

    根据提供的文件信息,我们可以提取并总结出以下几个与C#中的正态分布相关的知识点: ### 1. 正态分布简介 正态分布(Normal Distribution),也称作高斯分布(Gaussian Distribution),是一种非常常见的连续概率...

    c#实时打点画正态分布

    要根据用户输入的均值和方差生成符合正态分布的随机数,我们需要使用统计学中的正态分布函数(Normal Distribution Function,ND),通常通过标准正态分布转换(z-score)来实现。可以使用System.Random类生成...

    用C语言编写正态分布函数

    2. **正态分布**:设置正态分布的参数(均值μ和方差σ²),并通过随机数生成器生成符合特定正态分布的随机数。 3. **显示结果**:打印出生成的随机数,并展示不同均值和方差下的分布情况。 ##### 实现步骤 为了...

    产生服从正态分布的一个随机数

    用该程序可输出一个(0,1)区间内的服从高斯分布的随机数,精度为15位字长。

    解决C# Random生成随机数重复问题实例

    解决了C# Random生成随机数重复问题,并生成随机数的 介绍了五种方法。 没有分的童鞋,可以参考博文,博文里有源码: http://blog.csdn.net/shuai_wy/article/details/78606175

    正态分布的C++实现

    在C++中,我们可以利用`&lt;random&gt;`库来生成正态分布的随机数。首先,我们需要创建一个`std::normal_distribution`对象,指定均值和标准差,然后使用`std::mt19937`或`std::mt19937_64`这样的随机数引擎来生成样本。 ...

    random-inc.rar_java api_random_正态分布 随机数 代码_正态分布C语言_零一分布算法

    用c语言编写的产生正态随机数的源代码: 算法一产生12个(0,1)平均分布的随机函数,用大数定理可以模拟出正态分布。 算法二用到了数学中的雅可比变换,直接生成正态分布,但此算法在计算很大规模的数时 会出现...

    用labview实现的正态分布的随机数并生成对应的直方图

    用labview实现的正态分布的随机数并生成对应的直方图(Achieved with labview normally distributed random numbers and generate the corresponding histogram)

    C语言程序 产生服从正态分布、瑞利分布、泊松分布的随机数

    最近上通信建模这门课时范平志老师布置的这个作业,我做好后传上来方便后人参考,包括了三个C语言程序,分别产生服从正态分布、瑞利分布、泊松分布的随机数。程序是是用的C语言编写,备有大量注释,浅显易懂,且全部...

    正态分布、均匀分布噪声特性分析matlab.zip_噪声正态分布_均匀分布_均匀分布噪声_正态分布_正态分布、均匀分布噪声特性分

    通过MATLAB的随机数生成函数,可以生成符合正态分布或均匀分布的噪声序列,然后进行各种统计特性的计算,例如计算概率密度函数(PDF)、累积分布函数(CDF)、谱密度等。此外,还可以利用MATLAB进行仿真研究,观察噪声对...

    practice.rar_labview_labview正态分布_labview高斯分布_shortery6y

    1. **生成随机数**:LabVIEW提供了生成随机数的函数,可以设置分布类型为正态分布,并指定均值和标准差。这可以通过“生成随机数”函数节点实现。 2. **计算概率密度函数(PDF)**:正态分布的概率密度函数为: \...

    MATLAB用随机数rand生成正态分布并进行误差分析(内含下载链接).zip

    本资源有两段代码,一段是用rand随机数循环算pi的值和矩阵算pi的值并进行对比和耗时...另一段是用matlab内置伪随机算法rand生成正态分布概率密度函数,并包含图像的生成和对比。有问题可以私信,有问必答,欢迎你的购买

    对数正态分布的C++实现

    1. 对数正态分布的对数(自然对数)服从正态分布,这意味着原分布的均值和方差对应于对数的均值和方差。 2. 分布的形状由正态分布的均值μ和标准差σ决定。μ控制了分布的中心位置,而σ决定了分布的宽度。 3. 对数...

    java编出正态分布的方法

    1. **定义**:正态分布是由两个参数μ(均值)和σ^2(方差)决定的概率分布。数学表达式为: \[ f(x; \mu, \sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(x-\mu)^2}{2\sigma^2}} \] 其中,μ是均值,σ...

    产生均匀分布、瑞利分布、正态分布随机变量序列

    对于均值μ和标准差σ的正态分布,可以将两个独立的均匀分布随机数转换为正态分布: \[ Z = \mu + \sigma \cdot \sqrt{-2 \cdot \ln(U)} \cdot \sin(2\pi V) \] 其中U和V是[0,1]区间内的均匀分布随机数,Z则是正态...

Global site tag (gtag.js) - Google Analytics