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-сфере?
Мне нужно случайным образом выбрать n-мерный вектор длиной 1. Лучше всего выбрать случайную точку на сфере и нормализовать ее:
[code]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] [/code]
Единственная проблема заключается в том, что объем n-шара уменьшается с увеличением размера, поэтому использование равномерного распределения из random.random занимает очень много времени даже для небольшого n, например 17. Есть ли лучший (более быстрый) способ получить случайную точку на n-сфере?
По сути, то, что я пытаюсь сделать, - это перемещение точки относительно двух разных шкал.
Причина в том, чтобы редактировать значения в базе данных 3D -приложения. Пересерите красную точку, относительно красной шкалы в синий шкалу и в конечном...
По сути, то, что я пытаюсь сделать, - это перемещение точки относительно двух разных шкал.
Причина в том, чтобы редактировать значения в базе данных 3D -приложения. Пересерите красную точку, относительно красной шкалы в синий шкалу и в конечном...
По сути, то, что я пытаюсь сделать, - это перемещение точки относительно двух разных шкал.
Причина в том, чтобы редактировать значения в базе данных 3D -приложения. Пересерите красную точку, относительно красной шкалы в синий шкалу и в конечном...
По сути, то, что я пытаюсь сделать, - это перемещение точки относительно двух разных шкал.
Причина в том, чтобы редактировать значения в базе данных 3D -приложения. Пересерите красную точку, относительно красной шкалы в синий шкалу и в конечном...
По сути, то, что я пытаюсь сделать, - это перемещение точки относительно двух разных шкал.
Причина в том, чтобы редактировать значения в базе данных 3D -приложения. Пересерите красную точку, относительно красной шкалы в синий шкалу и в конечном...