⌯Information/General

랜덤뽑기

코밴 2014. 10. 9. 16:27
반응형

랜덤값(난수) 취득하는 여러방법

난수는 정해진 범위내에서 대략 만들어낸 숫자로 난수 취득시 정확한 수치를 예상할 수 없당.


  • 1을 포함하지 않는 0.0 ~ 0.999... 의 수치를 구하는법

var i;

i = Math.random();

trace(i);


Math.random() 메소드는 0.0 ~ 0.999... 사이의 랜덤값을 구한다.

엔터프레임 돌려보면 훨씬 확실히 알 수 있다.


무난하게 자주 쓰이는 방법으로 이 뒤에 숫자를 곱하면 그 숫자만큼 범위를 확장할 수 있다.


var i;

i = Math.random() * 20;

trace(i);


이러면 0.0 ~ 19.999... 사이의 랜덤값을 구한다.

직접 계산해보면 대충 이해가 갈듯하다.


  • -1 ~ 0.999... 사이값을 구하는법

var i;

i = Math.random() * 2 - 1;

trace(i);


일단 난수(0.0 ~ 0.999...)에 2를 곱하면 (0.0 ~ 1.999...)가 된다.

여기서 1을 빼면 (-1 ~ 0.999...) 가 되버림


여기서 위에것을 좀 응용하면


var i;

i = (Math.random() * 2 - 1) * 100;

trace(i); 


위처럼 100을 곱하게되면 -100 ~ 99.999... 사이값을 구할 수 있게된다.


  • 0 ~ 9 사이값을 구하는법

var i:int;

i = Math.random() * 10;

trace(i); 

var i;

i = Math.floor(Math.random() * 10);

trace(i); 


두 가지가 있다. 하나는 변수에 int형을 줘서 소수점을 무시하는 방법

하나는 Math.floor() 메소드로 소수점을 떨구는 방법이다.

뭐 자신의 상황에 맞게 잘 골라쓰자


이 녀석의 응용은 아래와 같다.

var i;
//0~2 사이의 값

i = Math.floor(Math.random() * 3);

switch (i){

//0일때

case 0:

trace("넌 이미 수학을 하고있다.");

//1일때

case 1:

trace("미쿠미쿠하게 해봐라");


이처럼 스위치를 이용해서 0 과 1을 case로 지정하면 랜덤 선택이 이뤄진다.


  • X부터 특정값 위까지의 수 구하기

(말이 좀 이상한데 그냥 최소치가 정해지면 그 최소치에 준해서 최대치를 정하는 방법임)

var i;

i = Math.floor(Math.random() * 6) + 10;

trace(i); 

이렇게 하면 10 ~ 15의 사이값이 구해짐

풀어서 보자면 

Math.random() * 6 로 0.0 ~ 5.999...의 값이 구해졌고 

여기에 Math.floor()메소드로 소수점을 떨구고 10을 더하게 되니까 10 ~ 15 사이값이 구해진다.


게임의 무기 공격력이나 몬스터의 공격력 범위를 정할때 쓸만함.


일단 기본은 이정도임!


그나저나 설마 내가 수학을 하게 될줄이야....... 

아직 산순가? 암튼...

내가 탈덕 한다는 소리만큼 놀랄일



반응형