c++实训5-6-7-8
来源:互联网 发布:60魔兽数据库 编辑:程序博客网 时间:2024/06/15 03:24
因为已经放假,所以很多内容因为学过而省略
实训五 一元多项式的存储与计算
进行对此方程的计算:
思路,对
或者直接计算。很简单。
实训六生成正态分布的伪随机数
随机数的生成使用
1.用srand(time(0))初始化随机种子
2.使用rand()函数。生成随机数个数
rand函数的返回值是伪随机数,在范围0~RAND_MAX内均匀分布,RAND_MAX是十进制32767 .为使每次生词的随机数序列不同,所以需要在rand()之前用系统时间指定随机种子。。
生成区间[a,b]的使用办法,rand()%(b-a)+a;
- 生成服从正态分布的随机数
概率密度函数:f(x)=1ϕ2π−−√exp(−(x−u)22ϕ2)
分布函数:F(x)=∫X∞f(t)dt
中心极限定理:
x~n(0,1)X=∑n−1i=0−n2n12−−√ X∼N(U,ϕ2):X←u+ϕX
Box Muller 算法:X∼N(0,1):X=Rcosθ=−2lnX1−−−−−−√cos(2πX2) X∼N(u,ϕ2):X←u+ϕX
为了对程序的验证:写下了代码,并且注释:
#include<iostream>#include<fstream>#include<ctime>using namespace std;const double PI = 3.1415926;double ND_BoxMuller(double u = 0, double t = 1){ //产生一个随机数 double x1 = double(rand() )/ RAND_MAX; double x2 = double(rand()) / RAND_MAX; double x = u + t*sqrt(-2.0*log(x1))*cos(2 * PI*x2); //cout << x << " "; return x;}double ND_CentralLimit(double u, double t){ //随机数 double total = 0; for (int i = 0; i < 12; i++)//计算12个【0,1】均匀分布的随机数之和 total += double(rand()) / RAND_MAX; double x = u + t*(total - 6);//n=12,n/2=6 return x;}void showRandom(double arr[], int num){ for (int i = 0; i < num; i++) cout << arr[i] << endl;}void DatatoFile(double a[], double b[], int num){ //将俩种方法产生的1000个随机数按spss的txt格式写入文件 ofstream out("SPSS数据.txt"); for (int i = 0; i < num; i++) out << a[i] << " " << b[i] << endl; out.close();}int main(){ const int N = 1000;//随机1000个数 double Xm[N], Xc[N];//存储生成的随机数 double u = 2.0, t = 3.5;//均值u和方差t srand((unsigned int)time(0)); for (int i = 0; i < N; i++) { Xm[i] = ND_BoxMuller(u, t); Xc[i] = ND_CentralLimit(u, t); } DatatoFile(Xm, Xc, N); cout << "Box Muller算法:" << endl; showRandom(Xm, 5); cout << "中心极限算法" << endl; showRandom(Xc, 5); system("pause"); return 0;}
然后我用spass,一脸懵逼,怎么用,乱捣鼓为
就这样了,有空再来玩。
实训七信息的加密与解密
此篇的加密解密,是根据异或数字得到的,再异或一次得到初始信息。可根据RC4流密码,差不多。
实训八最小二乘法拟合直线
LinearFit(double abr[],double x[],double y[],int n)//abr存放的abr三个值的数组,x是x的值,y是y的值{ double xsum=0,ysum=0,x2sum=0,xysum=0;//分别进行存储值 for(int i=0;i<n;i++) { xsum+=x[k]; ysum+=y[k]; x2sum+=x[k]*x[k]; xysum+=x[k]*y[k]; } abr[0]=(n*xysum-xsum*ysum)/(n*x2sum-xsum*xsum);//系数a abr[1]=(ysum-abr[0]*xsum)/n;//系数b double yavg=ysum/n; double dy2sum1=0;dy2sum2=0;//$r^2$计算式的分子分母 for(int i=0;i<n;i++) { dy2sum1+=((abr[0]*x[k]+abr[1])-yavg)*((abr[0]*x[k]+abr[1])-yavg); dy2sum2+=(y[k]-yavg)*(y[k]-yayg); } abr[2]=dy2sum1/dy2sum2;//相关系数r^2}
阅读全文
0 0
- 7、8 C循环
- C语言程序设计7--8章
- C(8,6)*C(1,1)=28
- C专家编程(5-6)
- C 3,5,7整除
- c 程序设计语言 第二版 练习题 4-5 4-6 4-7 4-8
- c实训!
- C.8
- 8C
- C.6
- c++(6)
- C.7
- c++(7)
- C++(5)
- C.5
- c++(5)
- C/C++_lesson1~8测试
- C/C++(5)printk函数
- yii框架404页面的定制
- javascript时间戳和日期字符串相互转换
- vector和map编程零碎知识点(一)
- JavaMail发送邮件
- 动态数据源切换
- c++实训5-6-7-8
- STL常用函数复习之————vector
- logback 异步日志配置
- Android热修复技术选型——三大流派解析
- Wolf CMS 新旧两个版本中的文件上传漏洞分析
- ORA-28000 账户被锁
- 搭建Spring+SpringMVC+MyBatis工程
- 【MR】YARN 运行机制
- Okhttp之连接池ConnectionPool简单分析(一)