思路:

总共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随机点名程序相关推荐

  1. matlab ploty,matlab绘制函数 如何利用matlab的ploty

    最近有网友提出"matlab绘制函数 如何利用matlab的ploty"等问题,小小知识站提取了各大知名网站有关"matlab绘制函数 如何利用matlab的ploty& ...

  2. matlab filter 函数,C++ 实现matlab filter()函数

    (C++ 实现matlab filter()函数) C++ 实现matlab filter()函数 笔者在做信号处理的过程中,用到了一个带通滤波器,通过matlab计算设计好参数之后,直接调用filt ...

  3. matlab中子函数的文件名,Matlab子函数定义

    Matlab子函数定义 在matlab的函数定义中,如果函数如果函数较长或较多,往往可以将各函数分别写在多个.m文件中,但有时函数可能很短,就几行,可能希望将多个函数定义放在同一个.m文件中,这里就存 ...

  4. matlab 子函数怎么写,matlab中怎么写函数

    1.matlab怎么写函数文件~ 1.首先在电脑中打开baimatlab软件. 2.在打开的页面中点击"du主页"栏目下的"新建"按钮.zhi 3.然后在打开的 ...

  5. matlab用gui 画函数,MATLAB GUI ,2,使用MATLAB的函数来实现MATLAB GUI,part 1,图

    一 概述 其实MATLAB的GUI完全可以使用MATLAB中各种控件的函数来实现,也可以说GUI就是一个figure,本人也是对MATLAB GUI比较感兴趣的一个学习者,在学习MATLAB过程中,搜 ...

  6. matlab silhouette函数,相当于Matlab的聚类质量函数?

    我在下面展示了一个在MATLAB和Python/Numpy中的示例silhouette实现(请记住,我对MATLAB比较流利): 1) MATLAB语言function s = mySilhouett ...

  7. matlab写函数教程,【Matlab基础】 自定义函数

    函数--是编程的核心概念之一,是能够完成相对独立功能的代码封装成的模块. 在主程序中通过函数名和实参调用它,通过接口(即函数的输入.输出参数)来实现"通讯".所以在调用函数时,你只 ...

  8. matlab 匿名函数 diff,在MATLAB中使用匿名函数会降低性能...其他人是否注意到了这一点?...

    在MATLAB中使用匿名函数会降低性能...其他人是否注意到了这一点? 为了重构我的MATLAB代码,我认为我会在函数编程的启发下将函数作为参数传递(MATLAB称为匿名函数). 但是,性能似乎受到了 ...

  9. matlab利用函数 编程求,MATLAB 函数编写方法与应用

    试探结构: MATLAB 从 5.2 版本开始提供了一种新的试探式语句结构,其一般的形式为: try 语句段1 catch 语句段2 end 本语句结构首先试探性地执行语句段 1,如果在此段语句执行过 ...

  10. matlab求函数极值教程,MATLAB程序设计教程(7)—MATLAB解方程与函数极值

    MATLAB程序设计教程(7)--MATLAB解方程与函数极值 第7章MATLAB解方程与函数极值 7.1  线性方程组求解 7.2  非线性方程数值求解 7.3  常微分方程初值问题的数值解法 7. ...

最新文章

  1. oracle客户端没有装exp,oracle 10G 客户端安装后,尝试 exp 命令报错, 求解
  2. ClickOnce 部署概述
  3. Android 自定义控件 ViewPager头部指示器控件 ViewPagerBelowIndicator
  4. Web Client Software Factory系列(3):View-Presenter模式
  5. linux查看perl进程,如何找到挂起perl脚本(linux进程)的位置
  6. ASP.NET MVC 开源驾校考试系统
  7. html思维导图word版,[精选]思维导图(完美排版word).doc
  8. EBS 个性化:个性化设置界面
  9. 去掉word中的页眉
  10. flash 不显示 旋转 补间动画_【图片】Flash入门5:详解制作补间动画(非传统补间)【flash软件吧】_百度贴吧...
  11. 09-实战拓展(ico图标、图标字体、网站优化三大标签、logo优化、过渡transition、:focus获取元素焦点)
  12. CeisumLabApkServe--为CeisumLab工具下载地图,影像数据的.pak文件架设地图服务
  13. 【ORB-SLAM】原理部分
  14. pcl怎么根据深度显示颜色_大麦和黄牛再惹众怒,PCL全明星上表现不佳
  15. 学计算机前端技术学院,百度前端技术学院(任务)
  16. cocos2dx lua优化总结
  17. 机器人:打开潘多拉魔盒
  18. 计算机仿真实验单摆,计算机仿真实验用凯特摆测重力加速度.doc
  19. HTML5 iframe标签和a标签组合使用
  20. 气体润滑轴承matlab分析,轴承润滑常见的7种方式及其优缺点

热门文章

  1. 求矩阵中非零元素个数(L0范式)
  2. 下载微信账单用于分析
  3. 淘宝女装店铺如何提升转化?
  4. 视频教程-【吴刚大讲堂】电商品牌文案设计方法-电子商务
  5. 淘宝直播商品识别大赛
  6. Django的Forms.py
  7. mysql + excel 校正线上数据
  8. 如何利用springboot快速搭建一个消息推送系统
  9. 狂野飙车8:极速凌云 for Mac v1.0.2 Asphalt 8 好玩的赛车游戏
  10. c++高效位运算函数之 __builtin_