软件工程原理和方法 第二次作业(金城 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函数的伪随机性,虽然是伪随机的,但是在某些具体问题里效能可能胜于一些精确的随机函数,在单元测试模块中,测试代码应该怎么写,我还不是很清楚,希望在接下来的阶段中可以学习这方面内容并运用到实际中。