当前位置: 首页 > news >正文

厦门免费网站建设昆明网站建设制作

厦门免费网站建设,昆明网站建设制作,穿衣搭配的网站如何做,合肥房地产交易网目录 一、舒尔特方格简介 二、如何生成舒尔特方格 #xff08;一#xff09;线性同余法 1、利用线性同余法生成随机数序列的规律 (1) 当a和c选取合适的数时#xff0c;可以生成周期为m的随机数序列 (2) 种子seed取值也是有周期的 2、利用线性同余法生成5阶舒尔特方格…目录 一、舒尔特方格简介 二、如何生成舒尔特方格 一线性同余法 1、利用线性同余法生成随机数序列的规律 (1) 当a和c选取合适的数时可以生成周期为m的随机数序列 (2) 种子seed取值也是有周期的 2、利用线性同余法生成5阶舒尔特方格的程序 (1)先验证当x0不变时生成的随机数序列是有周期的 (2)验证seed值x0也具有周期性 (3)生成5维舒尔特方格数字 二利用rand()函数 1、rand()函数搭配srand(time(NULL))函数 2、动态取模法 (1)初始化 (2)随机将a中数据存入b中 3、图解动态取模法 (1)a、b初始状态 (2)生成第一个随机数 (3)生成第二个随机数 4执行最后一步 4、动态取模法代码 rand()随机函数可以用来生成舒尔特方格数字。下边先介绍一下舒尔特方格。 一、舒尔特方格简介 舒尔特方格是用来测试和训练专注力的百度百科的介绍如下 舒尔特方格画一张有25个小方格(规格1cm*1cm)的表格将1~25的数字顺序打乱填在表格里面然后以最快速度从1数到25要边读边指出一人指读一人帮忙计时。 采用盯点法就可以随时训练的在教室和家里每天盯着某个点和物体看上几分钟就可以的还可以采用舒尔特训练法。 运用这种方法的时候可以自制几套卡片绘制表格任意填上数字。从 1开始边念边指出相应的数字直到25为止。同时诵读出声施测者一旁记录所用时间。数完 25 个数字所用时间越短注意力水平越高。以 12 —— 14 岁年龄组为例能达到 16 以上为优秀 26 属于中等水平 36 则需要进行强化提高。 ​ 注百度百科上介绍的舒尔特方格是5维(5行5列)规格的而实际维数是可变的维数越高难度越大1维2维太简单一般不用。3维、4维属于初级难度5维6维属于中级难度7级及以上就属于难度比较高级的了。 二、如何生成舒尔特方格 5维舒尔特方格内数字的排列不是固定的位置是随机的运用排列组合的知识可以知道一共有25个不同的排列方式。用人工排列生成的方法显然是不可行的那么用什么算法可以实现这个目的呢下边介绍两种方法。 一线性同余法 在上一篇文章中介绍了线性同余生成随机数的方法。线性同余的公式如下所示 ​     (1) 其中a是乘法器c是增值m是模这三个都是常数​是生成的随机数序列当n0时的值称为种子seed。 1、利用线性同余法生成随机数序列的规律 (1) 当a和c选取合适的数时可以生成周期为m的随机数序列 周期为m的意思就是在一个周期内利用公式1迭代计算m次正好可以把数字0~m-1每个数字都可以生成且只生成一次而且最后一次迭代生成的数正好就是种子数。迭代到第m1次时生成的数字和第一次迭代生成的数字一样再接着迭代就会重复上一个周期。生成一个周期内的数字排列顺序表面看是无规律实际上是由公式1计算出来的所以叫伪随机数。 还需要注意并不是任意取一组a和c就可以生成周期为m的伪随机数序列。a和c的取值是有限定条件的条件如下图所示。 ​ (2) 种子seed取值也是有周期的 利用公式(1)当a、c、m都确定后当seed值选取不同时生成的随机数序列也不同。但是需要注意并不是任意取一个seed值生成的随机数序列都不一样seed取值也是有周期的当随机数的周期是m时seed的周期也是m。也就是seed0时和seedm时生成的随机数序列是一样的。也就是利用线性同余方法生成不同的随机数序列最多有m种。 2、利用线性同余法生成5阶舒尔特方格的程序 5阶舒尔特方格的数字范围为1~25每个格子数字各不相同排列顺序随机。所以可以考虑使用线性同余法。经过测试发现当c11a11时利用线性同余计算出来的伪随机数序列的周期是25。 (1)先验证当x0不变时生成的随机数序列是有周期的 编写一个给定x00生成两个周期随机数的测试程序如下 #include iostream using namespace std;int main() {int i,x00,a11,c11,m25; //确定a11c11m25 for(i0;im*2;i) //此循环用于生成2个周期内的随机数 {x0(a*x0c)%m;coutx0 ;}coutendl; return 0; } 下图是测试结果图中黄色框内是第一个周期的25个随机数绿色框内是第二个周期内的25个随机数。可以看出两个周期内的随机数排列顺序完全一致因此说明当x0不变时生成的随机数呈周期性变化。 ​ (2)验证seed值x0也具有周期性 编写一个x0从0增加到49(两个周期)时每个seed值生成一个周期的随机函数序列代码如下 #include iostream using namespace std;int main() {int i,j,x0,a11,c11,m25; //确定a11c11m25 for(j0;jm*2;j) //此循环用于使种子值从0增加到49 {x0j;coutseedx0; for(i0;im;i) //此循环用于生成一个周期内 {x0(a*x0c)%m;coutx0 ;}coutendl; } return 0; } 下图是测试结果如下图从图中可以发现seed值在0~24范围内(黄线以上)生成的25个随机数序列各不相同而seed在25~49范围内黄线以下时的随机序列与0~24范围内依次对应完全一样说明seed值对随机序列的影响也是周期性的周期也是25。  ​ 综上所述利用基本的线性同余算法对于5维舒尔特方格最多只能生成25个不同的排列。 (3)生成5维舒尔特方格数字 本例程序将生成的25个5维舒尔特方格数字输出到一个csv文件内。因为利用线性同余算法生成的随机数范围为0~24而5维舒尔特方格内的数字为1~25所以只需将生成的随机数再加1即可。 #include iostream #include fstreamusing namespace std;int main() {int i,j,x0,a11,c11,m25; //确定a11c11m25 ofstream oFile; //新建一个ofstream文件oFileoFile.open(ShultGrid.csv,ios::out|ios::trunc);//打开oFile文件文件名称为ShultGrid.csvfor(j0;jm;j) //此循环用于使种子值从0增加到49 {x0j;oFile舒尔特方格x0; for(i0;im;i) //此循环用于生成一个周期内 {x0(a*x0c)%m; if(i%50) //每5个数字分成一行 {oFileendl; }oFilex01,; //生成的随机数为0~24加1后变为1~25。输入一个,代表光标移动到同一行的下一个单元格 }oFileendlendl; //最后一行回车然后再空一行 } return 0; } 以下是程序运行后生成的csv文件部分舒尔特方格截图。 ​ 二利用rand()函数 以上介绍了利用线性同余法生成舒尔特方格的方法方法比较简单但是最大的缺点是只能生成25个不同的排列。要想生成更多不同的排列还需要用其他的方法。而利用rand()函数就是一种可行的方法。 1、rand()函数搭配srand(time(NULL))函数 在上一讲种介绍了可以利用rand()搭配srand(time(NULL))函数生成1~25的随机数代码如下所示。 #include iostream #include cstdlib #include ctime #include windows.h #include stdio.h #include unistd.h #include sys/types.h using namespace std;int main() {int m,n;cinnm; // srand(getpid());srand(time(NULL));while(1){coutrand()%(m-n1)nendl;Sleep(1000);}} 运行代码输入n1m25生成的结果如下图所示。从图中可以看出在前25个数中有重复的数字还缺了一些数字。这是因为rand()函数是以32768为模在一个周期内可以生成0~32767范围内互不相同的随机数序列。但是rand()%25的结果就可能在0~25范围内会出现重复或者缺失的情况。 ​ 所以用这种方法是不可行的。 2、动态取模法 本例提出了一种新的方法实现不同维数舒尔特方格的生成方法也需要用到rand()、srand()函数在算法上采用动态取模方法。 动态取模算法的思路是 (1)初始化 声明两个长度为25的一维数组a[25]b[25]数组a用来按顺序存放1~25数字b用来存放从a中随机取出来的数字。用j表示数组b的角标i表示数组a[]的角标k表示需要更新数据的a[]的角标。 (2)随机将a中数据存入b中 从j0开始依次随机将a中的一个数字存入到b[j]中然后将a中角标i以后的有效数字依次向前移动一位。此时a[i]就被覆盖了而a[24-j]那个位置的数据就无效了下次取数字就不会再考虑这个位置。a中有效数字就是a中还没有被存入到b中的数字。a的角标i是用srand()搭配rand()%(25-j)随机生成的。此步关键代码为 srand(time(NULL)); irand()%(25-j);b[j]a[i];a[i]a[i1]; 模m25-j是可变的因为每次从a中取走一个数字a中的有效数字就减少了一个所以生成的随机数范围就要减少1也就是模m是依次减少1是动态可变的所以叫动态取模法。 3、图解动态取模法 (1)a、b初始状态 a、b初始化后的状态如下图所示。 ​ (2)生成第一个随机数 假设第一次i3则把a[3]的值4赋给b[0]然后从i3开始到i23结束执行a[i]a[i1]进行数据更新。a、b数组执行生成随机数前后的对比如下图所示。图中a数组中有效的数字所占据的空间用绿色填充无效的空间用白色填充。数组b中已经填入的随机数字用蓝色填充没有填入数字的用白色填充。 ​ (3)生成第二个随机数 假设第二次i22那么取出其中存储的数据24放入b[1]中然后从i22开始到i22结束执行a[i]a[i1]进行数据更新。a、b数组执行生成随机数前后的对比如下图所示。 ​ 4执行最后一步 执行到第25步时a、b数组内的存储情况如下图所示。 ​ 4、动态取模法代码 #include iostream #includestdio.h #include cstdlib #include ctime #include fstream #include string using namespace std;int* diff_random(int m,int num) {int a[num];//a数组用于按1-num顺序存放初始数字b用于存放随机生成的舒尔特数字 int *bnew int[num];int i,j,k; for(i0;inum;i)//初始化初始数字数组 {a[i]im;}srand(time(NULL));for(j0;jnum;j) //利用无重复随机数算法生成舒尔特方格数组j为生成数组的序号 {irand()%(num-j); //生成数组a的随机序号范围为0~num-j,用i表示 b[j]a[i]; //将a[i]中存放的数字(也就是i1)赋值给b[j]for(ki;knum-j-1;k) //将a[i]中存放的数字删除将a[i1]~a[num-j]的数字依次向前移动一个位置 {a[k]a[k1];} }for(i0;inum;i) //初始化初始数字数组 {couta[i]endl;} return b; }int main() {int dim,num;//dim:舒尔特方格维数,num:方格个数 cout请输入舒尔特方格维数endl;cindim; numdim*dim;int i;int *bdiff_random(1,num);ofstream oFile;//新建一个ofstream文件oFileoFile.open(ShultGrid1.csv,ios::out|ios::trunc);//打开oFile文件文件名称为ShultGrid.csvoFiledim维舒尔特方格endl; for(i0;inum;i){oFileb[i],;if((i1)%dim0){oFileendl;} }oFile.close();coutdim维舒尔特方格已生成请打开ShultGrid1.csv文件查阅endl;return 0; }
http://wiki.neutronadmin.com/news/212974/

相关文章:

  • 如何为公司建立网站企业所得税的计算公式
  • 韩国的汽车设计网站wordpress无法点上传图片
  • 阳春县建设局网站wordpress首页仅导航怎么设置
  • 建立网站 用英语1万一个月扣多少个税
  • 怀化网站网站建设海南在线新闻中心
  • wordpress免费建站吗wordpress教程之
  • 网站网页设计项目计划书温州微网站制作多少钱
  • vue做网站的好处机器封所有端口 不支持做网站
  • wordpress固定链接分类广告优化是做什么的
  • 汉中网站建设电话阜阳公司做网站
  • 网站建设移动网络公司禁用 wordpress 自带 jquery
  • 盐城市城南新区建设局网站哪些网站可以做视频收费
  • 如何建立一个企业的网站wordpress pdf 免费
  • 北京时代 网站建设北京科技公司名单
  • 广东长城建设集团有限公司 网站网站优化外链
  • 做暖暖视频网站seo发包技术教程
  • 关于推进公司网站开发的请示电子烟网站建设
  • 关于asp.net的网站模板在线网页制作
  • 网站seo系统山东电力建设第一工程公司网站
  • 网页制作网站开发建筑投标网站
  • 请seo的人帮做网站排名产品设计欣赏
  • 网站开发专业分数线重庆网站建设开发公司
  • flash网站的优势一个网站怎么做2个服务器
  • 利用国外网站文章图片做书营利广州安全教育平台登陆
  • 厦门帮忙建设网站网站开发范例文档
  • 小游戏网站怎么做建站温州营销网站公司哪家好
  • seo优化百度seo谷歌seo外贸推广网站seo优化运帝国网站数据库配置文件
  • 一万元做网站房屋3d设计软件
  • 青岛做网站建公司north WordPress教程
  • 桂林北站到象鼻山景区怎么坐车深圳网站建设选哪家