Вычислительный выбор случайной точки на n-сфереPython

Программы на Python
Ответить
Anonymous
 Вычислительный выбор случайной точки на n-сфере

Сообщение Anonymous »

Мне нужно случайным образом выбрать n-мерный вектор длиной 1. Лучше всего выбрать случайную точку на сфере и нормализовать ее:

Код: Выделить всё

import random

def point(n):
sq = 0
v = []
while len(v) < n:
x = 1 - 2*random.random()
v.append(x)
sq = sq + x*x
if sq > 1:
sq = 0
v = []
l = sq**(0.5)
return [x / l for x in v]
Единственная проблема заключается в том, что объем n-шара уменьшается с увеличением размера, поэтому использование равномерного распределения из random.random занимает очень много времени даже для небольшого n, например 17. Есть ли лучший (более быстрый) способ получить случайную точку на n-сфере?

Подробнее здесь: https://stackoverflow.com/questions/380 ... a-n-sphere
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»