Подтвердить что ты не робот

Как сгенерировать единичный вектор, указывающий в случайном направлении с изотропным распределением направления?

Мне нужно создать метод генерации единичного вектора в трех измерениях, который указывает в случайном направлении с использованием генератора случайных чисел. Распределение направления ДОЛЖНО быть изотропным.
Вот как я пытаюсь создать случайный единичный вектор:
  v = randn(1,3);
v = v./sqrt(v*v');

Но я не знаю, как закончить изотропную часть. Любые идеи?

4b9b3361

Ответ 1

Вы делаете это правильно. Случайное нормальное распределение координат дает вам равномерное распределение направлений.

Чтобы создать 10000 равномерных точек на единице, вы запустите

v = randn(10000,3);
v = bsxfun(@rdivide,v,sqrt(sum(v.^2,2)));

plot3(v(:,1),v(:,2),v(:,3),'.')
axis equal

enter image description here

Ответ 2

Я ничего не знаю о Matlab, но мне кажется, что вы можете попробовать создать две случайные полярные координаты (theta и phi), а затем преобразовать их в декартовы координаты с помощью trig.