RandomStream (랜덤 스트림)이란 블루프린트나 레벨 블루프린트는 물론 애니메이션용 Anim Blueprint 에서도 사용할 수 있는 반복형 난수를 생성하는 것입니다. 오브젝트를 흩어놓거나 환경을 절차적 생성할 때, 즉 임의성이 필요는 하지만 그래프를 계산할 때마다 매번 일관된 분포가 필요할 때 아주 좋습니다. 이전엔 랜덤 값을 사용하면 그래프를 계산할 때마다 분포가 달라지곤 했습니다. 즉 블루프린트를 옮기거나 어떤 작업을 하거나 해서 그래프가 다시 계산되면 이펙트가 완전히 달라지는 것입니다. 랜덤 스트림 으로는, 시드 값에 따라 이펙트를 수정하여 원하는 결과를 낸 다음, 전체적인 이펙트를 유지한 채 다른 수정을 가하는 것이 가능합니다.
RandomStream 변수
RandomStream 은 블루프린트에서 특수한 유형의 구조체 변수로 사용 가능합니다. 다른 변수와 마찬가지로 그래프 모드에서 내 블루프린트 탭을 통해 생성하여 추가시킬 수 있습니다.

블루프린트 클래스나 레벨 블루프린트 안에서 새 변수를 추가하는 법에 대한 상세 정보는 변수 생성 문서를 참고하시기 바랍니다.
RandomStream 함수
RandomStream 변수를 활용하기 위해서, RandomStream 을 입력으로 받아 함수에 따라 여러가지 유형의 난수를 출력하는 함수 세트가 있습니다.

함수 | 설명 |
---|---|
Random Bool from Stream | 임의로 0 또는 1 을 출력합니다. |
Random Float from Stream | (0.0, 1.0) 범위의 Float 난수를 출력합니다. |
Random Float in Range from Stream | (Min, Max) 범위의 Float 난수를 출력합니다. |
Random Integer From Stream | (0, Max - 1) 범위까지 균등 분포되는 Integer 난수를 출력합니다. |
Random Integer In Range From Stream | (Min, Max) 범위의 Integer 난수를 출력합니다. |
Random Rotator From Stream | 임의의 Rotator 값을 출력합니다. |
Random Unit Vector From Stream | 임의 유닛 길이의 Vector 값을 출력합니다. |
위의 함수 중 하나를 선택하면 RandomStream 변수에 연결된 그래프에 놓입니다.

랜덤 스트림을 사용하여 블루프린트에 속하는 컴포넌트를 임의로 놓고 돌리는 함수 예제는 다음과 같습니다:

보시듯이 랜덤 부울, 플로트, 인티저, 벡터, 로테이터 모두 같은 스트림에서 뽑아낼 수 있습니다.
Initial Seed
Initial Seed (초기 시드) 프로퍼티는 난수 스트림 계산에 사용됩니다. 같은 시드에서의 난수 발생 순서는 계산될 때마다 매번 같기 때문에, 앞서 말한 일관성을 얻을 수 있는 것입니다. 시드가 달라지면 값의 순서도 달라집니다.
즉 RandomStream 의 Initial Seed 를 변경하면 난수 발생 순서를 바꿀 수 있습니다. 이런 식으로 순서나 분포가 입맛에 맞을 때까지 랜덤 이펙트를 수정할 수 있고요. Initial Seed 는 블루프린트 인스턴스마다 새로 생성됩니다. 즉 블루프린트 인스턴스를 월드에 놓거나 기존 인스턴스를 복제할 때마다, 그 블루프린트에 속하는 각 RandomStream 변수에는 새로운 Initial Seed 값이 주어집니다. 즉 각 인스턴스는 별개의 것으로, 수정하여 정확히 원하는 결과를 만들어낼 수 있습니다.
Initial Seed 변경하기
변수에 Initial Seed 프로퍼티를 직접 설정하기 위해서는 RandomStream 변수를 편집용으로 노출시켜야 합니다. 노출시키고 나면 블루프린트의 인스턴스가 선택되었을 때 디테일 탭에 Initial Seed 프로퍼티가 나타납니다.

블루프린트 그래프 안에서 Initial Seed 를 특정한 값이나 새로운 임의의 값으로 설정할 수도 있습니다.
Set Random Stream Seed 노드는 풀잎이나 돌처럼 하나의 블루프린트로 여러 오브젝트를 놓을 때, 테스팅이나 기타 목적으로 항상 같은 식으로 놓고자 할 때 좋습니다. 레벨에 블루프린트 를 놓을 때 Initial Seed 가 임의 설정되도록 덮어쓰게 됩니다.