В этом примере показано, как создавать случайные точки в объеме сферы, как описано Кнутом [1]. Сфера в этом примере центрирована в начале координат и имеет радиус 3.
Одним из способов создания точек внутри сферы является задание их в сферических координатах. Затем их можно преобразовать в декартовы координаты для построения графика.
Сначала инициализируйте генератор случайных чисел, чтобы сделать результаты в этом примере повторяемыми.
rng(0,'twister')Рассчитайте угол отметки для каждой точки сферы. Эти значения находятся в разомкнутом интервале, ), но распределены неравномерно.
rvals = 2*rand(1000,1)-1; elevation = asin(rvals);
Создайте азимутальный угол для каждой точки сферы. Эти значения равномерно распределены в открытом интервале, ).
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

Если нужно разместить случайные числа на поверхности сферы, укажите значение постоянного радиуса, которое будет последним входным аргументом для sph2cart. В этом случае значение равно 3.
[x,y,z] = sph2cart(azimuth,elevation,3);
[1] Кнут, Д. Искусство компьютерного программирования. Том 2, 3-й ред., Массачусетс: Эддисон-Уэсли Лонгман, 1998, стр. 134-136.