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

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

1 Ответ

19 голосов
/ 17 марта 2012

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

Чтобы создать 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

...