Random.Range(min, max) 함수의 max값에 대해..
Unity3D/Tips / 2013. 5. 21. 09:53
Random.Range() 함수는
Random.Range(0, max);
했을 때, 0~(max-1)의 랜덤 값을 반환합니다.
개인적인 생각으로는 유니티는 리스트등의 개수를 받아서 인덱스로 바로 쓸 수 있도록 하려는 목적 같아 보입니다만..
( C#은 Count, Length등 대부분 배열에서 프로퍼티로 개수를 반환하고 있습니다. [예] Random.Range(0, List.Count); )
아무튼 max값은 반환하지 않습니다.
이런 이유로 NGUI는 NGUITools.cs 스크립트에 보시면
static public int RandomRange (int min, int max)
{
if (min == max) return min;
return UnityEngine.Random.Range(min, max + 1);
}
이렇게 max에 +1을 일부러 하고 있는 랜덤 함수를 직접 만들어서 쓰고 있습니다.
랜덤 함수를 사용할 때는 max값이 나와야 되는지 마는지 한 번 생각해보고 쓰는 게 좋을 것 같습니다.
P.s. 제가 처음에 Random.Range() 함수를 쓰면서 입력한 max값이 안나오는 것 같아서 확인해보고 올려봅니다.
아시는 분들은 다들 아시고 쓰시겠지만, 혹시나 모르시는 분들을 위해 올려봅니다.
[추가]
추가적으로...
함수 파라미터가 int일 경우는 max값이 안나오는 게 맞구요
static function Range (min : int, max : int) : int
Description -
Returns a random integer number between min [inclusive] and max [exclusive] (Read Only).
float일 경우에는 max값이 나옵니다.
static function Range (min : float, max : float) : float
Description -
Returns a random float number between and min [inclusive] and max [inclusive] (Read Only).
함수 파라미터가 int일 경우는 max값이 안나오는 게 맞구요
static function Range (min : int, max : int) : int
Description -
Returns a random integer number between min [inclusive] and max [exclusive] (Read Only).
float일 경우에는 max값이 나옵니다.
static function Range (min : float, max : float) : float
Description -
Returns a random float number between and min [inclusive] and max [inclusive] (Read Only).
반응형
'Unity3D > Tips' 카테고리의 다른 글
Max Texture Size of iOS Devices (0) | 2013.06.14 |
---|---|
게임 중 일시정지 하기 (0) | 2013.05.30 |
유니티 소소한 TIP (0) | 2013.04.05 |
How to get SceneView Camera? (0) | 2013.03.25 |
EditorWindow에서 마우스/키보드 입력 체크 (2) | 2013.03.22 |