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个。.
该怎么写呢?
展开
 我来答
jamesge1979
2011-10-03 · TA获得超过461个赞
知道小有建树答主
回答量:210
采纳率:0%
帮助的人:269万
展开全部
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);
}

最后,返回的数组完全满足楼主要求。
sbin2565317
2011-09-30 · TA获得超过204个赞
知道小有建树答主
回答量:259
采纳率:100%
帮助的人:184万
展开全部
数组元素个数不限定的情况下 ,太简单了:
var arr:Array=new Array();
for(var i:int=0;i<100;i++){
arr.push( int( Math.random()*4) );
}
///////////////////////////////
循环100次 不够4个0 的话 你就循环1000次 看它够不够。。。。哈哈
要是限定数组元素的个数 ,那就需要另一种算法了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式