繁体   English   中英

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

[英]Generate random points on 10-dimensional unit sphere

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

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

实现感知器算法并在 ℝ 10 中的以下合成数据集上运行它:pick 𝑤∗ = [1,0,0,…,0]; 通过在单位球体上随机均匀采样,然后删除那些边距 𝛾 小于 0.1 的点,生成 1000 个点 𝑥; 生成标签 𝑦 = sign((𝑤∗) T 𝑥)。

正如@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是欧几里得范数。 所以你必须从标准正态分布中采样 10 个点(使用 numpy?),然后对结果进行归一化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM