Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

구 내의 난수

이 예제에서는 크누스(Knuth) [1]가 설명한 대로 구의 부피 내에 임의의 점을 만드는 방법을 보여줍니다. 이 예제에 나와 있는 구는 원점을 중심으로 하고 반지름이 3입니다.

구 내에 점을 만드는 한 가지 방법은 구면 좌표에 점을 지정하는 것입니다. 그런 다음 이 점들을 카테시안 좌표(Cartesian Coordinate)로 변환하여 플로팅할 수 있습니다.

먼저, 이 예제의 결과가 반복되도록 하기 위해 난수 생성기를 초기화합니다.

rng(0,'twister')

구에 있는 각 점에 대해 고도각(Elevation Angle)을 계산합니다. 이들 값은 열린 구간 (-π/2,π/2) 내에 있지만 균등분포되지는 않습니다.

rvals = 2*rand(1000,1)-1;
elevation = asin(rvals);

구에 있는 각 점에 대해 방위각(Azimuth Angle)을 만듭니다. 이들 값은 열린 구간 (0,2π) 내에서 균등분포됩니다.

azimuth = 2*pi*rand(1000,1);

구에 있는 각 점에 대해 반지름 값을 만듭니다. 이들 값은 열린 구간 (0,3) 내에 있지만 균등분포되지는 않습니다.

radii = 3*(rand(1000,1).^(1/3));

카테시안 좌표로 변환하고 결과를 플로팅합니다.

[x,y,z] = sph2cart(azimuth,elevation,radii);
figure
plot3(x,y,z,'.')
axis equal

Figure contains an axes. The axes contains an object of type line.

구의 곡면에 난수를 배치하려면 sph2cart에 대한 마지막 입력 인수로 상수 반지름 값을 지정하십시오. 아래의 경우 이 값은 3입니다.

[x,y,z] = sph2cart(azimuth,elevation,3);

참고 문헌

[1] Knuth, D. The Art of Computer Programming. Vol. 2, 3rd ed. Reading, MA: Addison-Wesley Longman, 1998, pp. 134–136.

참고 항목

| |

관련 항목