matlab运用函数随机点名,matlab随机点名程序
思路:
总共n个学生(对应学号从1到n);每次抽查m个学生的作业;
输入n和m。得到每次抽查的学号;
而每次抽查的学号分为两部分:一部分是上次抽查过的人中随机30%的学号;另一部分是为抽查过的人中70%的学号;
最后,将每次抽查的人数在matlab界面显示,同时分别输出到D盘下的不同的txt文件中。
注意事项:最多抽查次数为10次;
具体如下:
function homework()
clear;
fid=fopen('d:\01.txt','w');%覆盖txt中已有的数据
fclose(fid);
fid=fopen('d:\02.txt','w');%覆盖txt中已有的数据
fclose(fid);
fid=fopen('d:\03.txt','w');%覆盖txt中已有的数据
fclose(fid);
fid=fopen('d:\04.txt','w');%覆盖txt中已有的数据
fclose(fid);
fid=fopen('d:\05.txt','w');%覆盖txt中已有的数据
fclose(fid);
fid=fopen('d:\06.txt','w');%覆盖txt中已有的数据
fclose(fid);
fid=fopen('d:\07.txt','w');%覆盖txt中已有的数据
fclose(fid);
fid=fopen('d:\08.txt','w');%覆盖txt中已有的数据
fclose(fid);
fid=fopen('d:\09.txt','w');%覆盖txt中已有的数据
fclose(fid);
fid=fopen('d:\10.txt','w');%覆盖txt中已有的数据
fclose(fid);
%disp,显示输入提示或者为文字;
disp('--------随机点名程序----------');
n=input('请输入班级总人数:');
m=input('请输入每次抽检的人数:');
disp('根据输入的数据,如果要所有学号抽查完,需要抽检的次数是');
x=floor((n-m)/(m-round(0.3*m)))+2
disp('请按任意键继续')
pause
%总人数为n,代表最大的学号;并将所有学号组成一个数列Z,这个表达式很简练的生成了一个行矩阵;
z=1:n;
%k0为所有学号第一次随机排列后的数列.
k0=randperm(n);
%从数列k0中随机生成m个不重复的学号,作为第一次抽检的学号数列;
s1=z(k0(1:m));
%有了第1次随机生成的数列S1,要从总数列Z中排除掉这个元素并形成一个新的矩阵s10;
%setdiff表示从z和S1中挑选中不同的!因为上面重复了多次,所以和原始人数比较选出不同的可以消去重复。
s10=setdiff(z,s1);%所有学号z中去掉已经抽取的s1学号,得到剩余的未抽取的学号;
%====================
disp('【第1次抽检的学号如下】');
disp('*********************************************************')
s1
disp('*********************************************************')
%====================
disp('---------第1次抽查后剩余的学号如下----------');s10
%下面是将s1输出到D盘1.txt文件中
[row,col]=size(s1);
fid=fopen('d:\01.txt','wt');
for i=1:row
for j=1:col
fprintf(fid,'.0f\n',s1(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
%==第2次抽查过程==================
%表示从s1(即第一次从z中抽出数量)中随机取30%(用round(0.3*m)表示数量);从s10(剩余学号)中随机取剩下的。
%注意,这里不是直接抽取,而是先生成数列序号的随机数,再用随机数序号表示出矩阵元,比如随机抽取5,8,1序列号,对应的位置的数据就被随机选中了。
k1=randperm(length(s1));k10=randperm(length(s10));
s130=s1(k1(1:round(0.3*m)));
if
length(s10)>(m-round(0.3*m))%如果剩余的学号s10的个数length(s10)大于70%m
s1070=s10(k10(1:(m-round(0.3*m))));%则从s10中随机抽取m-round(0.3*m)个学号。
s2=[s130,s1070];%再将这m-round(0.3*m)个学号和从s1中抽取的30%的学号s130合并,得到第2次抽查的学号
s20=setdiff(s10,s1070);%从第1次所有剩下的学号(S10)中减去S1070(它是从第1次剩余的s10中抽走的学号);
disp('【第2次抽检的学号如下】');
disp('*********************************************************')
s2
disp('*********************************************************')
disp('---------第2次抽检后剩余的学号---------------');s20
%下面是将s1输出到D盘2.txt文件中
[row,col]=size(s2);
fid=fopen('d:\02.txt','wt') ;
for i=1:row
for j=1:col
fprintf(fid,'.0f\n',s2(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
%导出文件完毕
else
disp('【【【第2次抽检的学号】】】')
s10;
disp('已完成一次完整抽查。')
%下面是将s1输出到D盘txt文件中
[row,col]=size(s10);
fid=fopen('d:\02.txt','wt');
for i=1:row
for j=1:col
fprintf(fid,'.0f\n',s10(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
return
end
%==第3次抽查过程==================
k2=randperm(length(s2));k20=randperm(length(s20));
s230=s2(k2(1:round(0.3*m)));
if
length(s20)>(m-round(0.3*m))%如果剩余的学号s10的个数length(s10)大于70%m
s2070=s20(k20(1:(m-round(0.3*m))));%则从s10中随机抽取m-round(0.3*m)个学号。
s3=[s230,s2070];%再将这m-round(0.3*m)个学号和从s1中抽取的30%的学号s130合并,得到第2次抽查的学号
s30=setdiff(s20,s2070);%从第1次所有剩下的学号(S10)中减去S1070(它是从第1次剩余的s10中抽走的学号);
disp('【第3次抽检的学号如下】');
disp('*********************************************************')
s3
disp('*********************************************************')
disp('---------第3次抽检后剩余的学号----------------');s30
%下面是将s3输出到D盘3.txt文件中
[row,col]=size(s3);
fid=fopen('d:\03.txt','wt');
for i=1:row
for j=1:col
fprintf(fid,'.0f\n',s3(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
%导出文件完毕
else
%下面是将s1输出到D盘txt文件中
[row,col]=size(s20);
fid=fopen('d:\03.txt','wt');
for i=1:row
for j=1:col
fprintf(fid,'.0f\n',s20(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
%上面的txt文件导出结束
disp('----------第3次抽检的学号----------------')
s20;
disp('已完成一次完整抽查。')
return
end
%==第4次抽查过程==================
k3=randperm(length(s3));k30=randperm(length(s30));
s330=s2(k3(1:round(0.3*m)));
if
length(s30)>(m-round(0.3*m))%如果剩余的学号s10的个数length(s10)大于70%m
s3070=s30(k30(1:(m-round(0.3*m))));%则从s10中随机抽取m-round(0.3*m)个学号。
s4=[s330,s3070];%再将这m-round(0.3*m)个学号和从s1中抽取的30%的学号s130合并,得到第2次抽查的学号
s40=setdiff(s30,s3070);%从第1次所有剩下的学号(S10)中减去S1070(它是从第1次剩余的s10中抽走的学号);
disp('【第4次抽检的学号如下】');
disp('*********************************************************')
s4
disp('*********************************************************')
disp('---------------第4次抽检后剩余的学号-------------');s40
%下面是将s4输出到D盘4.txt文件中
[row,col]=size(s4);
fid=fopen('d:\04.txt','wt');
for i=1:row
for j=1:col
fprintf(fid,'.0f\n',s4(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
%导出文件完毕
else
%下面是将s1输出到D盘txt文件中
[row,col]=size(s30);
fid=fopen('d:\04.txt','wt');
for i=1:row
for j=1:col
fprintf(fid,'.0f\n',s30(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
%上面的txt文件导出结束
disp('【【【第4次抽检的学号】】】')
s30;
disp('已完成一次完整抽查。')
return
end
%==第5次抽查过程==================
k4=randperm(length(s4));k40=randperm(length(s40));
s430=s3(k4(1:round(0.3*m)));
if
length(s40)>(m-round(0.3*m))%如果剩余的学号s10的个数length(s10)大于70%m
s4070=s40(k40(1:(m-round(0.3*m))));%则从s10中随机抽取m-round(0.3*m)个学号。
s5=[s430,s4070];%再将这m-round(0.3*m)个学号和从s1中抽取的30%的学号s130合并,得到第2次抽查的学号
s50=setdiff(s40,s4070);%从第1次所有剩下的学号(S10)中减去S1070(它是从第1次剩余的s10中抽走的学号);
disp('【第5次抽检的学号如下】');
disp('*********************************************************')
s5
disp('*********************************************************')
disp('-------------第5次抽检后剩余的学号-------------------');s50
%下面是将s5输出到D盘5.txt文件中
[row,col]=size(s5);
fid=fopen('d:\05.txt','wt');
for i=1:row
for j=1:col
fprintf(fid,'.0f\n',s5(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
%导出文件完毕
else
%下面是将s1输出到D盘txt文件中
[row,col]=size(s40);
fid=fopen('d:\05.txt','wt');
for i=1:row
for j=1:col
fprintf(fid,'.0f\n',s40(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
%上面的txt文件导出结束
disp('【【【第5次抽检的学号】】】')
s40;
disp('已完成一次完整抽查。')
return
end
%==第6次抽查过程==================
k5=randperm(length(s5));k50=randperm(length(s50));
s530=s4(k5(1:round(0.3*m)));
if
length(s50)>(m-round(0.3*m))%如果剩余的学号s10的个数length(s10)大于70%m
s5070=s40(k50(1:(m-round(0.3*m))));%则从s10中随机抽取m-round(0.3*m)个学号。
s6=[s530,s5070];%再将这m-round(0.3*m)个学号和从s1中抽取的30%的学号s130合并,得到第2次抽查的学号
s60=setdiff(s50,s5070);%从第1次所有剩下的学号(S10)中减去S1070(它是从第1次剩余的s10中抽走的学号);
disp('【第6次抽检的学号如下】');
disp('*********************************************************')
s6
disp('*********************************************************')
disp('----------------第6次抽检后剩余的学号--------------');s60
%下面是将s1输出到D盘2.txt文件中
[row,col]=size(s6);
fid=fopen('d:\06.txt','wt');
for i=1:row
for j=1:col
fprintf(fid,'.0f\n',s6(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
%导出文件完毕
else
%下面是将s1输出到D盘txt文件中
[row,col]=size(s50);
fid=fopen('d:\06.txt','wt');
for i=1:row
for j=1:col
fprintf(fid,'.0f\n',s60(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
%上面的txt文件导出结束
disp('【【【第6次抽检的学号】】】');s50
disp('已完成一次完整抽查。')
return
end
%==第7次抽查过程==================
k6=randperm(length(s6));k60=randperm(length(s60));
s630=s5(k6(1:round(0.3*m)));
if
length(s60)>(m-round(0.3*m))%如果剩余的学号s10的个数length(s10)大于70%m
s6070=s50(k60(1:(m-round(0.3*m))));%则从s10中随机抽取m-round(0.3*m)个学号。
s7=[s630,s6070];%再将这m-round(0.3*m)个学号和从s1中抽取的30%的学号s130合并,得到第2次抽查的学号
s70=setdiff(s60,s6070);%从第1次所有剩下的学号(S10)中减去S1070(它是从第1次剩余的s10中抽走的学号);
disp('【第7次抽检的学号如下】');
disp('*********************************************************')
s7
disp('*********************************************************')
disp('-------------第7次抽检后剩余的学号----------------');s70
%下面是将s1输出到D盘2.txt文件中
[row,col]=size(s7);
fid=fopen('d:\07.txt','wt');
for i=1:row
for j=1:col
fprintf(fid,'.0f\n',s7(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
%导出文件完毕
else
%下面是将s1输出到D盘txt文件中
[row,col]=size(s60);
fid=fopen('d:\07.txt','wt');
for i=1:row
for j=1:col
fprintf(fid,'.0f\n',s60(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
%上面的txt文件导出结束
disp('-------------第7次抽检的学号---------------');s60
disp('已完成一次完整抽查。')
return
end
%==第8次抽查过程==================
k7=randperm(length(s7));k70=randperm(length(s70));
s730=s6(k7(1:round(0.3*m)));
if
length(s70)>(m-round(0.3*m))%如果剩余的学号s10的个数length(s10)大于70%m
s7070=s60(k70(1:(m-round(0.3*m))));%则从s10中随机抽取m-round(0.3*m)个学号。
s8=[s730,s7070];%再将这m-round(0.3*m)个学号和从s1中抽取的30%的学号s130合并,得到第2次抽查的学号
s80=setdiff(s70,s7070);%从第1次所有剩下的学号(S10)中减去S1070(它是从第1次剩余的s10中抽走的学号);
disp('【第8次抽检的学号如下】');
disp('*********************************************************')
s8
disp('*********************************************************')
disp('---------------第8次抽检后剩余的学号---------------');s80
%下面是将s8输出到D盘8.txt文件中
[row,col]=size(s2);
fid=fopen('d:\08.txt','wt');
for i=1:row
for j=1:col
fprintf(fid,'.0f\n',s8(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
%导出文件完毕
else
%下面是将s1输出到D盘txt文件中
[row,col]=size(s70);
fid=fopen('d:\08.txt','wt');
for i=1:row
for j=1:col
fprintf(fid,'.0f\n',s70(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
%上面的txt文件导出结束
disp('【【【第8次抽检的学号】】】');s70
disp('已完成一次完整抽查。')
return
end
%==第9次抽查过程==================
k8=randperm(length(s8));k80=randperm(length(s80));
s830=s7(k8(1:round(0.3*m)));
if
length(s80)>(m-round(0.3*m))%如果剩余的学号s10的个数length(s10)大于70%m
s8070=s70(k80(1:(m-round(0.3*m))));%则从s10中随机抽取m-round(0.3*m)个学号。
s9=[s830,s8070];%再将这m-round(0.3*m)个学号和从s1中抽取的30%的学号s130合并,得到第2次抽查的学号
s90=setdiff(s80,s8070);%从第1次所有剩下的学号(S10)中减去S1070(它是从第1次剩余的s10中抽走的学号);
disp('【第9次抽检的学号如下】');
disp('*********************************************************')
s9
disp('*********************************************************')
disp('-------------第9次抽检后剩余的学号----------------');s90
%下面是将s9输出到D盘9.txt文件中
[row,col]=size(s9);
fid=fopen('d:\09.txt','wt');
for i=1:row
for j=1:col
fprintf(fid,'.0f\n',s9(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
%导出文件完毕
else
%下面是将s1输出到D盘txt文件中
[row,col]=size(s80);
fid=fopen('d:\09.txt','wt');
for i=1:row
for j=1:col
fprintf(fid,'.0f\n',s80(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
%上面的txt文件导出结束
disp('【【【第9次抽检的学号】】】');s80
disp('已完成一次完整抽查。')
return
end
%==第10次抽查过程==================
k9=randperm(length(s9));k90=randperm(length(s90));
s930=s8(k9(1:round(0.3*m)));
if
length(s90)>(m-round(0.3*m))%如果剩余的学号s10的个数length(s10)大于70%m
s9070=s80(k90(1:(m-round(0.3*m))));%则从s10中随机抽取m-round(0.3*m)个学号。
s_10=[s930,s9070];%再将这m-round(0.3*m)个学号和从s1中抽取的30%的学号s130合并,得到第2次抽查的学号
s_100=setdiff(s90,s9070);%从第1次所有剩下的学号(S10)中减去S1070(它是从第1次剩余的s10中抽走的学号);
disp('【第10次抽检的学号如下】');
disp('*********************************************************')
s_10
disp('*********************************************************')
disp('-------------第10次抽检后剩余的学号-----------------');s_100
%下面是将s_10输出到D盘10.txt文件中
[row,col]=size(s_10);
fid=fopen('d:\10.txt','wt');
for i=1:row
for j=1:col
fprintf(fid,'.0f\n',s_10(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
%导出文件完毕
else
%下面是将s1输出到D盘txt文件中
[row,col]=size(s90);
fid=fopen('d:\10.txt','wt');
for i=1:row
for j=1:col
fprintf(fid,'.0f\n',s90(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
%上面的txt文件导出结束
disp('【【【第10次抽检的学号】】】');s90
disp('已完成一次完整抽查。')
return
end
matlab运用函数随机点名,matlab随机点名程序相关推荐
- matlab ploty,matlab绘制函数 如何利用matlab的ploty
最近有网友提出"matlab绘制函数 如何利用matlab的ploty"等问题,小小知识站提取了各大知名网站有关"matlab绘制函数 如何利用matlab的ploty& ...
- matlab filter 函数,C++ 实现matlab filter()函数
(C++ 实现matlab filter()函数) C++ 实现matlab filter()函数 笔者在做信号处理的过程中,用到了一个带通滤波器,通过matlab计算设计好参数之后,直接调用filt ...
- matlab中子函数的文件名,Matlab子函数定义
Matlab子函数定义 在matlab的函数定义中,如果函数如果函数较长或较多,往往可以将各函数分别写在多个.m文件中,但有时函数可能很短,就几行,可能希望将多个函数定义放在同一个.m文件中,这里就存 ...
- matlab 子函数怎么写,matlab中怎么写函数
1.matlab怎么写函数文件~ 1.首先在电脑中打开baimatlab软件. 2.在打开的页面中点击"du主页"栏目下的"新建"按钮.zhi 3.然后在打开的 ...
- matlab用gui 画函数,MATLAB GUI ,2,使用MATLAB的函数来实现MATLAB GUI,part 1,图
一 概述 其实MATLAB的GUI完全可以使用MATLAB中各种控件的函数来实现,也可以说GUI就是一个figure,本人也是对MATLAB GUI比较感兴趣的一个学习者,在学习MATLAB过程中,搜 ...
- matlab silhouette函数,相当于Matlab的聚类质量函数?
我在下面展示了一个在MATLAB和Python/Numpy中的示例silhouette实现(请记住,我对MATLAB比较流利): 1) MATLAB语言function s = mySilhouett ...
- matlab写函数教程,【Matlab基础】 自定义函数
函数--是编程的核心概念之一,是能够完成相对独立功能的代码封装成的模块. 在主程序中通过函数名和实参调用它,通过接口(即函数的输入.输出参数)来实现"通讯".所以在调用函数时,你只 ...
- matlab 匿名函数 diff,在MATLAB中使用匿名函数会降低性能...其他人是否注意到了这一点?...
在MATLAB中使用匿名函数会降低性能...其他人是否注意到了这一点? 为了重构我的MATLAB代码,我认为我会在函数编程的启发下将函数作为参数传递(MATLAB称为匿名函数). 但是,性能似乎受到了 ...
- matlab利用函数 编程求,MATLAB 函数编写方法与应用
试探结构: MATLAB 从 5.2 版本开始提供了一种新的试探式语句结构,其一般的形式为: try 语句段1 catch 语句段2 end 本语句结构首先试探性地执行语句段 1,如果在此段语句执行过 ...
- matlab求函数极值教程,MATLAB程序设计教程(7)—MATLAB解方程与函数极值
MATLAB程序设计教程(7)--MATLAB解方程与函数极值 第7章MATLAB解方程与函数极值 7.1 线性方程组求解 7.2 非线性方程数值求解 7.3 常微分方程初值问题的数值解法 7. ...
最新文章
- oracle客户端没有装exp,oracle 10G 客户端安装后,尝试 exp 命令报错, 求解
- ClickOnce 部署概述
- Android 自定义控件 ViewPager头部指示器控件 ViewPagerBelowIndicator
- Web Client Software Factory系列(3):View-Presenter模式
- linux查看perl进程,如何找到挂起perl脚本(linux进程)的位置
- ASP.NET MVC 开源驾校考试系统
- html思维导图word版,[精选]思维导图(完美排版word).doc
- EBS 个性化:个性化设置界面
- 去掉word中的页眉
- flash 不显示 旋转 补间动画_【图片】Flash入门5:详解制作补间动画(非传统补间)【flash软件吧】_百度贴吧...
- 09-实战拓展(ico图标、图标字体、网站优化三大标签、logo优化、过渡transition、:focus获取元素焦点)
- CeisumLabApkServe--为CeisumLab工具下载地图,影像数据的.pak文件架设地图服务
- 【ORB-SLAM】原理部分
- pcl怎么根据深度显示颜色_大麦和黄牛再惹众怒,PCL全明星上表现不佳
- 学计算机前端技术学院,百度前端技术学院(任务)
- cocos2dx lua优化总结
- 机器人:打开潘多拉魔盒
- 计算机仿真实验单摆,计算机仿真实验用凯特摆测重力加速度.doc
- HTML5 iframe标签和a标签组合使用
- 气体润滑轴承matlab分析,轴承润滑常见的7种方式及其优缺点