我需要生成一个在单位球体上以 10 个方向(10 个随机数的集合)均匀采样的向量。因此,10 个值的平方和应为 1。
\n\n这正是我需要生成这些点的问题:
\n\n\n\n实现感知器算法并在 \xe2\x84\x9d 10中的以下\n 合成数据集上运行它: pick \xe2\x88\x97 = [1,0,0,\xe2\x80\xa6,0]; 通过在单位球面上随机均匀采样生成 1000\n 个点,然后删除那些边距小于 0.1 的点;生成\n 标签 = 符号((\xe2\x88\x97) T )。
\n
正如@Andrex 所建议的,这是正确的解决方案:
import numpy as np
import math
s = np.random.normal(0, 1, 10)
norm=math.sqrt(sum(s*s))
result=s/norm
Run Code Online (Sandbox Code Playgroud)
result答案在哪里。您可以评估结果:
sum([x*x for x in result])
1.0
Run Code Online (Sandbox Code Playgroud)