安全编程技术实验四

随机数生成算法实现及质量测试

一、实验目的

该实验为设计性实验,实验目的如下:
1.学会如何采用软件方式设计和实现一个高质量的随机数生成算法。
2.掌握常用的随机数质量测试的方法。

二、实验内容

1.设计一个伪随机数生成算法。
2.对(1)设计的伪随机数生成算法进行编程实现。
3.对(2)产生的伪随机数进行统计检验

三、实验要求

1、本实验一人一组,编程语言任选。
2、要求学生掌握伪随机数的生成原理,了解常用的伪随机数生成算法,并熟练掌握所选的编程语言。
3、要求学生能够设计一个伪随机数生成算法,并编程实现,具体要求如下:
(1)界面友好,操作方便。
(2)从界面输入需要生成的随机数个数和范围,并从界面输出生成的随机数(十六进制)。
(3)对生成的伪随机数进行统计检验。
4、实验报告要求:
(1)实验报告要求包括实验目的、实验要求、实验内容(算法的设计)、实验结果(伪随机数质量)分析和实验体会等,重点在于实验内容(算法的设计)和实验结果(伪随机数质量)分析。实验报告要求上传和打印。
(2)理论联系实际,认真分析设计的伪随机数生成算法的优点和缺点。
(3)写出伪随机数生成算法设计和实现过程中的心得和体会,并回答实验中的思考题。
(4)实验报告撰写规范请见附。

四、实验环境

计算机:Windows11、CodeBlocks C

五、实验提示

1.本实验可以参考以下资料:
(1)《编写安全的代码(第2版)》,(美)MichaelHoward,DavidLeBlanc,机械工业出版社,2005年
(2)《伪随机数生成及其在Java中的实现与应用》,王瑞胡、王宇,电脑开发与应用,2006年
(3)《伪随机数生成及其在计算机密码安全中的应用》,王瑞胡,网络通讯与安全,2005年
(4)《伪随机数随机性的一种新检验》,时正华、袁永生,诃海大学学报,2005年
(5)《一种伪随机数生成算法的研究与实现》,赵学峰,电脑学习,2005年
(6)《高质量程序设计指南——C++/C语言(第二版)》,林锐、韩永泉,电子工业出版社,2003年
2.更多关于伪随机数生成成算法设计及质量测试的参考资料请到实验室服务器或BB系统下载。

六、实验运行截图

七、实验代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    int a;
    int b,c,d;
    srand((unsigned)time(NULL));
    printf("输出区间:");
    scanf("%d %d",&b,&c);
    printf("输入个数:");
    scanf("%d",&d);
    int e,i;
    e = c-b;
    for(i=0; i<d; i++)
    {
        a = rand() % e + b;
        printf("%d(%#x)\n",a,a);
    }
    return 0;
    return 0;
}

八、实验总结

通过本次实验我对随机数的生成有了进一步的认识,学会了用time种子每次生成不同不随机数,之前只会用取余来获取几位数的随机数,通过本次学习则学会了如何获取任何范围内的随机数,并且学会了对随机数的统计检验。

九、思考题

除了你在实验中所用的方法,对伪随机数进行质量测试的方法还有哪些?

参数检验、均匀性检验(x2检验、柯氏检验、序列检验)、独立性检验(相关系数检验、列联表检验)、最值检验。

posted @ 2022-11-26 17:09  戴骏  阅读(41)  评论(0编辑  收藏  举报