2022年随机全排列生成程序及其应用开发 .pdf

上传人:Q****o 文档编号:28063404 上传时间:2022-07-26 格式:PDF 页数:6 大小:39.91KB
返回 下载 相关 举报
2022年随机全排列生成程序及其应用开发 .pdf_第1页
第1页 / 共6页
2022年随机全排列生成程序及其应用开发 .pdf_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《2022年随机全排列生成程序及其应用开发 .pdf》由会员分享,可在线阅读,更多相关《2022年随机全排列生成程序及其应用开发 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、(一)目的该部分内容是后面密码方案实现的基础,该程序主要是为了产生?全排列的随机数 ?。通过本部分内容使学生掌握一种以上产生今后在密码学中经常用到的随机全排列(可用作产生?代替表 ?或? 置换表 ?)的方法。(二)内容编制生成0n(n 255)的一个全排列的程序,可选择下列两个方法之一或自行设计另外方法:方法1:从一个随机文件读取n+1 字节数据d0,d1,? ,dn。由预先取定的一个0n 的全排列P(比如,可为0n 的自然排列)开始,依次对i=n,n-1,? ,1,计算: j=di-1+di(mod i)交换P 的第 i 项第 j 项(在此注意我们假定P 从第 0 项开始)。方法2:用一个随

2、机函数产生m(mn)字节数据d1,d2,? ,dm。对d1(mod(n+1),d2(mod(n+1),? ,dm(mod(n+1) 依次考察,把后面出现的与前相同者去掉;在最后剩下的数据中,把没有出现的0n 依序补写于后面。代码如下:给你两种不同的感谢我吧,哈哈1: #include stdio.h swap(int *pm,int *pn) int temp; temp =*pm; *pm=*pn; *pn=temp; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6

3、 页 - - - - - - - - - void main() int i; int a256; int n=256; int m; start: printf( n 此程序可产生范围在 0到255的随机数n ); printf( n 请输入你所需使用的随机数个数(不大于256):n ); scanf( %d ,&m); if( m n ) printf( n 输入数%d 比%d大,请重新输入! n ,m,n); goto start; srand( ( unsigned )time( NULL ) ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -

4、- - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - for (i=0, i= 0; i- ) swap(&ai, &arand()%m+0); printf( -n 以下为产生的不重复的随机数:n ) ; for (i=0, i= m- 1, i+ ) printf( %dt ,ai ); 2: #include stdio.h #define N 256 char PN; char dN; char *full_array( int n) int i,j; 名师资料总结 - - -精品资料欢迎下载 - - - -

5、- - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - char filename20; FILE *fp; char temp; start: printf( n 请输入随机数据采样文件名:n ); scanf( %s ,filename); if(fp=fopen(filename, rb )=NULL) printf( 没有找到文件: %sn ,filename); goto start; fread(d,n +1,1,fp); fclose(fp); printf( n 原文件中的字母

6、序列如下 :); for (i=0,i= n,i+ ) if(i)%8=0) printf( n ); printf( d%d=%c ,i,di); printf( nn 取定自然排列如下 :); for (i=0;i 0,i- ) j=(di-1 +di)%i; temp =Pi; Pi=Pj; Pj =temp; return (P); void main() int num,i; printf( 输入要进行全排列的字母个数:n ); scanf( %d ,&num); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - full_array(num - 1); printf( nn 随机排列后的新排列为 :); for (i=0;i num;i+ ) if(i)%8=0) printf( n ); printf( %d(%c) ,i,dPi); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁