加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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以内和的计算题目?明天继续

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读