软件工程原理和方法 第二次作业(金城 201731062506)

GIT地址 :https://github.com/927901442/Calculator

GIT用户名:927901442

学号后五位 :62506

博客地址 :https://www.cnblogs.com/jcahsy/

作业链接 :https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/2795

 

 

 VS在上学期就已经安装好,就不赘述,直接看编译环境

 

    

 

 

Git账号申请过程就按照流程说明按部就班就好,就不截图了,这是我申请成功后的账号

 

 

 

同时按照说明将阿超的四则运算拷贝到自己的库中如图所示

 

 

按照流程下载好,Git,如图 

 

 

 

在F盘中用GIT软件进进行连库(一开始做的时候忘记截图了,后来补做过程截得图)

我是在桌面点击右键运行git bash,连接成功后桌面会多一个空白文件夹,进入文件夹后创建一个名为自己账号的文件夹,然后打开VS,新建项目路径设置为该文件夹

 

 

 

 

 

 

 

 

设计代码:首先我想的是多个随机数用random.next(m,n)然后+,-,*,/也用随机数比如(1到4)然后通过switch语句选择(1到4分别代表+,-,*,/),代码如下

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Calculator9
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("需要多少道算术题?");
int k = int.Parse(Console.ReadLine());
for(int i=0;i<k;i++)
{
byte[] buffer = Guid.NewGuid().ToByteArray();
int iseed1 = BitConverter.ToInt32(buffer, 0);

Random num1 = new Random(iseed1);

float a = num1.Next(1, 40);
Random num2 = new Random();
float b = num2.Next(1, 40);
Random num3 = new Random(iseed1);
int c = num3.Next(1, 5);
float result = 0;
switch(c)
{
case 1:

result = a + b;
Console.WriteLine(a + "+" + b + "=" + result);
break;
case 2:

result = a - b;
Console.WriteLine(a + "-" + b + "=" + result);
break;
case 3:

result = a * b;
Console.WriteLine(a + "*" + b + "=" + result);
break;
case 4:

result = a / b;
Console.WriteLine(a + "/" + b + "=" + result);
break;
default:
break;
}

}
}
}
}

 


}

在这之间遇到的问题是,random函数是一个伪随机函数,他是以系统时间为因子,所以当循环次数较大时,他随机出的数据相同,为解决这个问题我在网上进行查找,并阅读了一篇博客,受益匪浅,下面内容都引用于那篇博客:

虽然通过我们的随机数看起来也很随机了,但必定这个算法是伪随机数,当第N个数和因子都相同时,生成的随机数仍然是重复的随机数,由于Random提供一个带参的构造函数允许我们传入一个因子,如果传入的因子随机性强的话,那么生成的随机数也会比较可靠,为了提供一个可靠点的因子,我们通常使用GUID产生填充因子,同样放在循环中测试:

for (int i = 0; i < 5; i++) {     byte[] buffer = Guid.NewGuid().ToByteArray();     int iSeed = BitConverter.ToInt32(buffer, 0);     Random random = new Random(iSeed);     Console.WriteLine(random.Next()); }

这样的方式保证了填充因子的随机性,所以生成的随机数也比较可靠

 

 最后修改了原来自己的代码,运行程序,得到如下效果图

 


建立单元测试,然后测试通过

 

 

设置断点

 

 

开始调试

 

性能分析,生成10000道四则运算,得到如下效能分析图

 

 

 

 

最后提交代码,首先用git add命令语法格式错误

 

 

 然后改正语法格式后用,git commit.显示要加邮箱和name

 

 

 

 最后git push提交

 

 登入github刷新后可以看到代码已经提交

 

 

 

 

 

 

 

 

新的和体会:

暴露了自己编程能力薄弱,需要多加练习,学习了git的使用,以及单元测试和效能分析的方法,虽然这个过程中遇到很多问题,但是收获还是挺多的,感谢那些帮助过我的同学。

学习分享,github 库连接可以连接自己库的地址,不用作业给的那个地址,其实这两个库都可以,在具体编程解决问题的时候可以先拆分步骤然后先实现一些小模块,有些库函数可以搜索得到,提高编程效率,学到了random函数的伪随机性,虽然是伪随机的,但是在某些具体问题里效能可能胜于一些精确的随机函数,在单元测试模块中,测试代码应该怎么写,我还不是很清楚,希望在接下来的阶段中可以学习这方面内容并运用到实际中。

 


 

posted on 2019-03-25 18:24  二进制dd  阅读(214)  评论(1编辑  收藏  举报

导航