AS3 中随即生成数组
例如数组内容为“0-3”4个数字组成。随即生成如下arr:Array=[0,0,0,1,0,1,2,0,3,0,0]0,1,2,3在数组中的位置可以不固定,数量也可以不固...
例如 数组内容为 “0-3” 4个数字组成。
随即生成 如下 arr:Array = [0,0,0,1,0,1,2,0,3,0,0]
0,1,2,3在数组中的位置可以不固定,数量也可以不固定。但要求 至少有4个0,其他至少各 1个。.
该怎么写呢? 展开
随即生成 如下 arr:Array = [0,0,0,1,0,1,2,0,3,0,0]
0,1,2,3在数组中的位置可以不固定,数量也可以不固定。但要求 至少有4个0,其他至少各 1个。.
该怎么写呢? 展开
2个回答
展开全部
function creatRandomAry(length:int=0):Array
{
var setAry:Array=[0,0,0,0,1,2,3];
if(length==0)length=Math.random()*93+7;
if(length<7)length=7;
while(setAry.length<length)
{
var randElement:int=int(Math.random()*4);
setAry.push(randElement);
}
var randAry:Array=new Array;
while(setAry.length)
{
var getElement:int=((setAry.splice(int(setAry.length*Math.random()),1)) as Array)[0];
randAry.push(randElement);
}
return randAry;
}
第一步:按照要求,生成的数组内至少要4个0,其他至少各1个,所以先生成一个具备这个条件的初始数组
var setAry:Array=[0,0,0,0,1,2,3];
第二步:按照要求,新输入的数组其长度也不固定,所以接下来就是生成需求数组的长度。注意:为满足要求,该数组长度至少为7。
if(length==0)length=Math.random()*93+7;
if(length<7)length=7;
第一段代码的意思是,如果没有输入生成数组长度参数或者参数为0,那么生成数组的长度为7~100中的随机值;
第二段代码的意思是,如果设定长度小于7会让它等于7。
第三步:生成除了要求的数值以外的其他数值,最终使得数组的长度满足需求。
while(setAry.length<length)
{
var randElement:int=int(Math.random()*4);
setAry.push(randElement);
}
第四步:因为生成的数组要求数字位置不固定,所以需要进行位置随机处理。这里,我采用一个新数组来装载从setAry中随机取出的值。
var randAry:Array=new Array;
while(setAry.length)
{
var getElement:int=((setAry.splice(int(setAry.length*Math.random()),1)) as Array)[0]; randAry.push(getElement);
}
最后,返回的数组完全满足楼主要求。
{
var setAry:Array=[0,0,0,0,1,2,3];
if(length==0)length=Math.random()*93+7;
if(length<7)length=7;
while(setAry.length<length)
{
var randElement:int=int(Math.random()*4);
setAry.push(randElement);
}
var randAry:Array=new Array;
while(setAry.length)
{
var getElement:int=((setAry.splice(int(setAry.length*Math.random()),1)) as Array)[0];
randAry.push(randElement);
}
return randAry;
}
第一步:按照要求,生成的数组内至少要4个0,其他至少各1个,所以先生成一个具备这个条件的初始数组
var setAry:Array=[0,0,0,0,1,2,3];
第二步:按照要求,新输入的数组其长度也不固定,所以接下来就是生成需求数组的长度。注意:为满足要求,该数组长度至少为7。
if(length==0)length=Math.random()*93+7;
if(length<7)length=7;
第一段代码的意思是,如果没有输入生成数组长度参数或者参数为0,那么生成数组的长度为7~100中的随机值;
第二段代码的意思是,如果设定长度小于7会让它等于7。
第三步:生成除了要求的数值以外的其他数值,最终使得数组的长度满足需求。
while(setAry.length<length)
{
var randElement:int=int(Math.random()*4);
setAry.push(randElement);
}
第四步:因为生成的数组要求数字位置不固定,所以需要进行位置随机处理。这里,我采用一个新数组来装载从setAry中随机取出的值。
var randAry:Array=new Array;
while(setAry.length)
{
var getElement:int=((setAry.splice(int(setAry.length*Math.random()),1)) as Array)[0]; randAry.push(getElement);
}
最后,返回的数组完全满足楼主要求。
展开全部
数组元素个数不限定的情况下 ,太简单了:
var arr:Array=new Array();
for(var i:int=0;i<100;i++){
arr.push( int( Math.random()*4) );
}
///////////////////////////////
循环100次 不够4个0 的话 你就循环1000次 看它够不够。。。。哈哈
要是限定数组元素的个数 ,那就需要另一种算法了
var arr:Array=new Array();
for(var i:int=0;i<100;i++){
arr.push( int( Math.random()*4) );
}
///////////////////////////////
循环100次 不够4个0 的话 你就循环1000次 看它够不够。。。。哈哈
要是限定数组元素的个数 ,那就需要另一种算法了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询