펠린 노이즈와 단순 노이즈는 유용한 잡음을 발생 시키며 완전히 랜덤하지 않습니다. 이러한 알고리즘은 일반적으로 절차 적으로 생성 된 경관 등을 만드는 데 사용됩니다. 예를 들어, 그것은 이와 (here에서 이미지)으로 지형을 생성 할 수

:이 이미지

를 잡음은 2D 하이트 이와 같은 (here로부터의 화상)을 생성
각 픽셀의 색은 높이를 나타냅니다. 하이트 맵을 생성 한 후 렌더러를 사용하여 이미지의 "높이"(색상)와 일치하는 지형을 만듭니다.
따라서 알고리즘의 결과는 실제로 "임의"가 아닙니다. 당신이 볼 수 있듯이 쉽게 식별 할 수있는 패턴이 많이 있습니다.
Simplex는 아마 더 적은 랜덤 함을 의미하는 조금 더 멋지 겠지만, 주된 목적은 비슷한 노이즈를 생성하지만 더 높은 차원으로 더 잘 조정된다는 것입니다. 즉, 3D, 4D, 5D 노이즈를 발생 시키면 단선 노이즈가 Perlin 노이즈를 능가하며 유사한 결과를 산출합니다.
일반 의사 난수 생성기를 원할 경우 Mersenne twister 또는 other prngs을 확인하십시오. 경고, 암호 해독에, prngs는 경고의 가득 차있을 수있다.
업데이트 :이 노이즈 함수의 임의의 속성으로
(OPS에 따라 업데이트 질문)
, 나는 펄린 노이즈가 입력으로 (매우) 가난한 사람의 PRNG를 사용하고, 수행 알고 인접한 "랜덤"픽셀 간의 일부 평활화/보간 입력 임의성은 실제로 사전 계산 된 임의의 벡터에 대한 의사 임의 색인입니다.
색인은 단순한 정수 연산을 사용하여 계산되며 아무 것도 기발합니다. 예를 들어 noise ++ 프로젝트는 소스 노이즈를 얻기 위해 미리 계산 된 "randomVectors"(here 참조)를 사용하고이 벡터의 다른 값 사이를 보간합니다. 이 알고리즘은 간단한 정수 연산을 사용하여이 벡터에 "임의의"색인을 생성하고 약간의 의사 난수를 추가합니다. 다음은 스 니펫입니다.
int vIndex = (NOISE_X_FACTOR * ix + NOISE_Y_FACTOR * iy + NOISE_Z_FACTOR * iz + NOISE_SEED_FACTOR * seed) & 0xffffffff;
vIndex ^= (vIndex >> NOISE_SHIFT);
vIndex &= 0xff;
const Real xGradient = randomVectors3D[(vIndex<<2)];
...
약간의 랜덤 잡음이 패턴을 생성하고 이웃 픽셀과 블렌딩되어 패턴을 생성합니다.
초기 잡음을 생성 한 후, perlin/simplex 잡음은 잡음의 옥타브 개념을 갖습니다. 즉, 서로 다른 스케일로 노이즈를 재 혼합하는 것입니다.이것은 더 많은 무늬를 만들어 낸다. 따라서 노이즈의 초기 품질은 미리 계산 된 무작위 배열과 psuedorandom 색인 생성의 효과만큼이나 우수합니다. 그러나 그 후 perlin 노이즈가 발생하면 분명히 임의성이 현저히 줄어 듭니다. 실제로는 생각보다 넓은 영역에 퍼집니다.