numpy 中是否有一些简单的工具可以给定一个值 x 返回三个模数为 x 的随机坐标?
最佳答案
好吧,我认为您不会为此目的在 numpy 中找到任何东西,但这会非常快:
from numpy.random import normal
from numpy.linalg import norm
from numpy import allclose
def random_vec(modulus):
while True:
y = normal(size=(3,))
if not allclose(y,0):
y *= modulus / norm(y)
return y
以上我假设对于向量的模块,你的意思是 L2规范。请注意,我们必须检查至少一个坐标是否不太接近零(或零!),这样我们在重新缩放组件时就不会出现数值舍入问题。
编辑:现在使用 normal()
而不是 rand()
我们从正态分布中选取坐标(然后当然重新缩放它们)以获得半径模数
球体上的随机点的原因解释了here .另请阅读下面 unutbu 的评论。
关于python - Numpy,给定范数返回可能的笛卡尔坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27580028/