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 object. The axes contains a line object which displays its values using only markers.

구의 곡면에 난수를 배치하려면 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.

참고 항목

| |

관련 항목