// 두수 사이의 랜덤수 뽑아오기

function getRand(_n1:uint, _n2:uint):uint{
 var min:uint = Math.min(_n1,_n2);
 var max:uint = Math.max(_n1,_n2);

 var _randomNum:Number;
 var randomNum:Number;
 
 do{
  _randomNum = Math.random();
  randomNum = Math.floor(_randomNum * Math.pow(10,max.toString(10).length));
  //trace("randomNum : "+randomNum);
 }while(randomNum>max || randomNum<min)
 
 return randomNum;
}


//테스트 1~20사이의 랜덤수를 뽑아낸다.

for(var i:int;i<10;i++){
trace(getRand(1,20));
}


//두수(_n1, _n2) 사이에서 _cnt개 만큼 중복 안되게 수를 뽑아내는 함수 (로또등에 응용하면 됨 ㅋ)

function getNums(_n1:uint, _n2:uint, _cnt:uint):Array{
 var arr:Array = new Array();
 var tmp:uint;
 var fnd:Boolean;
 
 if((Math.abs(_n1-_n2)+1) - _cnt <0) {// 1~2 사이에서 3개를 뽑아라 이런식에 말도 안되는 입력을 받을경우 처리. -1 리턴
  arr.push(-1);
  return arr;
 }


  while(true){
   tmp = getRand(_n1,_n2);
   fnd = false;
 
   for(var i:String in arr){
    if(uint(arr[i]) == tmp) {
     fnd=true;
     break;
    }
   }
   if(!fnd) arr.push(tmp);
   if(arr.length>_cnt-1) break;
  } 

 arr.sort( Array.NUMERIC ); // 정렬하여 숫자를 뽑아내고 싶을 경우에 사용하면 된다. 섞인채로 뽑고 싶다면 해당라인 제거.
 return arr;
}


//로또 테스트

trace(getNums(1,45,6));


//나중에 껍데기만 만들어서 사용하시면 됩니다. 감사.

'etc > old' 카테고리의 다른 글

2008年 5月 19日 月曜日  (0) 2008.05.20
연쇄 이벤트 방지(이벤트 버블링) 예시  (0) 2008.05.19
2008年 5月 16日 金曜日  (0) 2008.05.16
2008-05-15 火曜日  (0) 2008.05.15
C#에서 flash사용하기  (0) 2008.05.14

+ Recent posts