Flash 与课件制作:简单创建20道加法题目
发布时间:2020-12-15 17:27:38 所属栏目:百科 来源:网络整理
导读:var a:Array =[1,2,3,4,5,6,7,8,9,10];var dic:Array = [];var total:int = 20;creatRandomquestions();//创建的20道 20以内的简单加法function creatRandomquestions():void{var aIndex:int = Math.random()*a.length;var bIndex:int = Math.random()*a.len
var a:Array =[1,2,3,4,5,6,7,8,9,10]; var dic:Array = []; var total:int = 20; creatRandomquestions(); //创建的20道 20以内的简单加法 function creatRandomquestions():void { var aIndex:int = Math.random()*a.length; var bIndex:int = Math.random()*a.length; var numA:int = a[aIndex]; var numB:int = a[bIndex]; if(dic.indexOf(numA+"+"+numB)==-1) { dic.push(numA+"+"+numB); trace(numA+"+"+numB+"=?"); total --; } if(total > 0) { creatRandomquestions(); } } 这两道题目,采用一种递归方式设计,但是同事说,递归效率不是最好。而且采用上面的设计,会有漏洞,因为20以内加法的数据 还有 10以上数据。这样一来,上面虽然实现了随机 20道题目出来,不过离需求还有一些差别。于是采用另外一种设计,穷举帅选。 var dic:Array = []; var total:int = 20; var maxNum:int = 20; creatRandomquestions(); //创建的20道 20以内的简单加法 function creatRandomquestions():void { //穷举 for (var i:int = 1; i <= maxNum; i++) { for (var j:int = i; j <= maxNum; j++) { if(i+j > maxNum ) continue; { dic.push(i+"+"+j+"=?"); } } } for (i=0;i<20;i++) { var r:int = Math.random()*dic.length; trace(dic.splice(r,1)) } } ? ? ? 采用两个循环,将20以内的数据,随机组合起来,然后再帅选起来。这种做法 基本能够实现 20以内的数据组合,且和都是小于20的。采用穷举 再刷选的做法,理解起来也比较容易。也能基本完成目标。同样,出的题目也不会重复。 ?但是 你会发现一个小问题。前面的加数 都是个位数字,显得不自然。 ? 下面再改造一下,改成不重复的题目,避免出现 3+4 和4+3 这样重复的题目出现了。穷举法可以列举出各种排列组合。从1开始和1-20进行匹配 组合,这样子一开始不对其过滤重复的字眼。从理解上是比较容易。而又可以达到目的。 ?穷举法 可以解决了我们想要的问题。后来同事 又在讨论,追加了另外一种思路。通过方法接口,刷选20道且不重复的题目,效果还不错,心不由佩服。 因为写的方法虽然可以解决到问题。写得唠叨一点。 var dic:Array = []; var total:int = 20; var maxNum:int = 20; creatRandomquestions(); //创建的20道 20以内的简单加法 function creatRandomquestions():void { //穷举 for (var i:int = 1; i <= maxNum; i++) { for (var j:int = 1; j <= maxNum; j++) { if(i+j > maxNum ) continue; { dic.push([i,j]); } } } var result:Array =[]; while(result.length < maxNum) { var index:int = Math.random()*dic.length; var arr:Array = dic[index]; if(result.indexOf(arr[0]+"+"+arr[1]+"=?")==-1 && result.indexOf(arr[1]+"+"+arr[0]+"=?")==-1) { result.push(arr[0]+"+"+arr[1]+"=?"); } } trace(result.join("n")) } ? ? 后面,再续。再讨论还有无办法刷选这20道不重复且 20以内和的计算题目?明天继续 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- postgresql 删除 数据库,表,索引
- c# – GetType()何时返回RunTimeType,何时返回类似SamplePr
- c – std :: timed_mutex :: try_lock *虚假的失败
- Qt之解析XML元素(QXmlStreamReader)
- xml – XSLT删除所有属性的前导和尾随空格
- AJAX - $.get( url, [data], [success], [type] )
- (C)带SPI_SetMouse的SystemParametersInfo似乎不会改变光标
- 用NDK r9版本编译cocos2d x 2.0.4碰到的各个坑
- c# – Ruby和Dot net之间的加密 – 解密
- 红宝石 – Mac Rmagick不会安装Xcode 4.2