구 내의 난수
이 예제에서는 크누스(Knuth)[1]가 설명한 대로 구의 부피 내에 임의의 점을 만드는 방법을 보여줍니다. 이 예제에 나와 있는 구는 원점을 중심으로 하고 반지름이 3입니다.
구 내에 점을 만드는 한 가지 방법은 구면 좌표에 점을 지정하는 것입니다. 그런 다음 이 점들을 카테시안 좌표(Cartesian Coordinate)로 변환하여 플로팅할 수 있습니다.
먼저, 이 예제의 결과가 반복되도록 하기 위해 난수 생성기를 초기화합니다.
rng(0,'twister')
구에 있는 각 점에 대해 고도각(Elevation Angle)을 계산합니다. 이들 값은 열린 구간 내에 있지만 균등분포되지는 않습니다.
rvals = 2*rand(1000,1)-1; elevation = asin(rvals);
구에 있는 각 점에 대해 방위각(Azimuth Angle)을 만듭니다. 이들 값은 열린 구간 내에서 균등분포됩니다.
azimuth = 2*pi*rand(1000,1);
구에 있는 각 점에 대해 반지름 값을 만듭니다. 이들 값은 열린 구간 내에 있지만 균등분포되지는 않습니다.
radii = 3*(rand(1000,1).^(1/3));
카테시안 좌표로 변환하고 결과를 플로팅합니다.
[x,y,z] = sph2cart(azimuth,elevation,radii); figure plot3(x,y,z,'.') axis equal
구의 곡면에 난수를 배치하려면 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.