수색…


0과 1 사이의 임의의 숫자

Math.random();

0 (포함)과 1 (제외) 사이의 균등하게 분산 된 난수를 생성합니다.

예제 출력 :

  • 0.22282187035307288
  • 0.3948539895936847
  • 0.9987191134132445

최소값과 최대 값 사이의 임의의 숫자

function randomMinMax(min:Number, max:Number):Number {
    return (min + (Math.random() * Math.abs(max - min)));
}

이 함수는 최소값과 최대 값의 범위를 전달하여 호출됩니다.

예:

randomMinMax(1, 10);

출력 예 :

  • 1.661770915146917
  • 2.5521070677787066
  • 9.436270965728909

무작위 각도 (도)

function randomAngle():Number {
    return (Math.random() * 360);
}

출력 예 :

  • 31.554428357630968
  • 230.4078639484942
  • 312.7964010089636

배열의 무작위 값

배열 myArray 가 있다고 가정합니다.

var value:* = myArray[int(Math.random() * myArray.length)];

2.4539543 과 같은 값은 유효한 배열 인덱스가 아니기 때문에 int를 사용하여 Math.random() 의 결과를 int 로 캐스트합니다.

원 안에 임의의 점

먼저 원의 반경과 중심을 정의합니다.

var radius:Number = 100;
var center:Point = new Point(35, 70);

그런 다음 중심에서 임의의 각도 ( 라디안) 를 생성합니다.

var angle:Number = Math.random() * Math.PI * 2;

그런 다음 반환 된 점의 유효 반경을 생성합니다. 그러면 주어진 radius 내에있게됩니다. 이 분포를 사용하면 생성 점이 시간의 절반 반 반지름의 내부 원으로 끝나기 때문에 간단한 Math.random()*radius 은 수행하지 않지만 해당 원의 제곱은 원본의 1/4입니다. 적절한 배포판을 만들려면 함수가 다음과 같아야합니다.

var rad:Number=(Math.random()+Math.random())*radius; // yes, two separate calls to random
if (rad>radius) { rad=2*radius-rad; }

이 함수는 선형으로 최대 제로 0으로부터 증가 그 확률 함수를 갖는 값 생성 radius . 이것은 무작위 값의 합계가 모든 임의 값의 개별 밀도 함수의 컨벌루션 과 동일한 확률 밀도 함수를 가지기 때문에 발생합니다. 이것은 평균 학년을위한 몇 가지 확장 된 수학이지만 " 상자 신호 "로 설명 된 두 개의 균일 분포 밀도 함수의 회선 함수 그래프를 그리기 위해 GIF가 제공됩니다. if 연산자는 결과 함수를 최대 값으로 폴드하여 톱니 모양의 그래프 만 남깁니다.

radius=rradius=r+dr 사이에있는 원 스트립의 사각형이 r 및 매우 작은 상수 dr 이 증가함에 따라 선형 적으로 증가하므로 dr*dr<<r 이 선택되기 때문에이 함수가 선택됩니다. 따라서 중심에서 가까운 지점의 생성량은 중심 영역의 반경이 전체 원의 반경보다 작은 동일한 여백만큼 원의 모서리에서 생성 된 점의 양보다 작습니다. 전반적으로 점은 전체 원에 균등하게 분포됩니다.

이제 임의의 위치를 ​​얻으십시오.

var result:Point = new Point(
    center.x + Math.cos(angle) * rad,
    center.y + Math.sin(angle) * rad
);

원의 임의의 점 (주어진 반경의 원의 가장자리)을 얻으려면 rad 대신 radius 를 사용하십시오.

추신 : 예는 수학에 대한 설명으로 과부하가되었습니다.

무작위 각도 (라디안 단위)

function randomAngleRadians():Number
{
    return Math.random() * Math.PI * 2;
}

출력 예 :

  • 5.490068569213088
  • 3.1984284719180205
  • 4.581117863808207

"퍼센트 기회"작업의 성공 여부 결정

"x % 확률"상황에서 true 또는 false 로 롤백해야하는 경우 다음을 사용하십시오.

function roll(chance:Number):Boolean {
    return Math.random() >= chance;
}

사용 :

var success:Boolean = roll(0.5); // True 50% of the time.
var again:Boolean = roll(0.25); // True 25% of the time.

임의의 색상 만들기

어떤 임의의 색상을 얻으려면 :

function randomColor():uint
{
    return Math.random() * 0xFFFFFF;
}

빨강, 녹색 및 파랑 채널에 대한 추가 제어가 필요한 경우 :

var r:uint = Math.random() * 0xFF;
var g:uint = Math.random() * 0xFF;
var b:uint = Math.random() * 0xFF;

var color:uint = r << 16 | g << 8 | b;

여기서 r , gb 대한 고유 한 범위를 지정할 수 있습니다 (이 예제는 0-255).

무작위로 알파벳 순회

var alphabet:Vector.<String> = new <String>[ "A", "B", "C", "D", "E", "F", "G",
                                             "H", "I", "J", "K", "L", "M", "N",
                                             "O", "P", "Q", "R", "S", "T", "U",
                                             "V", "W", "X", "Y", "Z" ];

while (alphabet.length > 0)
{
    var letter:String = alphabet.splice(int(Math.random() *
                                            alphabet.length), 1)[0];
    trace(letter);
}

예제 출력 :

Y, J, C, T, O, R, G, B, M, F, E, D, U, S, L, X, K, Q, H, 지

배열 무작위 화

var alphabet:Array = [ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ];

for (var i:int=alphabet.length-1;i>0;i--) {
    var j:int=Math.floor(Math.random()*(i+1));
    var swap=alphabet[j];
    alphabet[j]=alphabet[i];
    alphabet[i]=swap;
}
trace(alphabet);    

예제 출력

H, W, S, Q, E, K, T, F, V, X, Y, G, B, Z, D, R, U, N, O, M, I, L, 에이

이 방법을 Fisher-Yates 배열 셔플이라고 합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow