Python 在10维单位球体上生成随机点

Python 在10维单位球体上生成随机点,python,random,Python,Random,我需要生成一个均匀采样的向量,10个方向(10个随机数的集合)位于一个单位球体上。所以,10个值的平方和应该是1 这正是我需要生成这些点的问题: 实现感知器算法,并在以下程序上运行它 中的合成数据集ℝ10:按照@Andrex的建议选择,以下是正确的解决方案: import numpy as np import math s = np.random.normal(0, 1, 10) norm=math.sqrt(sum(s*s)) result=s/norm 其中,result是答案。您可以

我需要生成一个均匀采样的向量,10个方向(10个随机数的集合)位于一个单位球体上。所以,10个值的平方和应该是1

这正是我需要生成这些点的问题:

实现感知器算法,并在以下程序上运行它
中的合成数据集ℝ10:按照@Andrex的建议选择,以下是正确的解决方案:

import numpy as np
import math

s = np.random.normal(0, 1, 10)

norm=math.sqrt(sum(s*s))
result=s/norm
其中,
result
是答案。您可以评估结果:

sum([x*x for x in result])
1.0

有一种说法,如果
X=(X1,…,XN)
是一个标准正态分布为
Xi
的向量,那么
X/NORM(X)
在单位范围内是一致的,其中
NORM
是欧几里德范数。因此,您必须从标准正态分布(使用numpy?)中抽取10个点,然后对结果进行标准化。

尝试这样做时出现了什么问题?我认为这是不正确的!你必须从正态分布中取样,我不明白为什么它应该来自正态分布?在问题的哪一部分,我们被限制为正态分布?毕竟,当你应用sqrt时,它不再是正态的,那么重点是什么呢?如果我们想要在球体上均匀分布,我们必须严格。有一个强大的数学基础背后我的发言,你可以在这里看到!你说得对!谢谢分享链接,很高兴知道
X/NORM(X)
如果取范数,结果是1单位球面上点的定义是什么!?这是标准(X)=1吗