【问题标题】:Generate random unit vector in d dimensional space in Python [duplicate]在Python中生成d维空间中的随机单位向量[重复]
【发布时间】:2020-05-18 05:04:15
【问题描述】:

我想知道最好的方法是:

在 Rd 中为 d = 100 生成 t = 160 个单位向量。

他们成对点积的 cdf 图,也就是计算 160C2 点积。

编辑:所以我坚持绘制 CDF,你如何从点积中推导出 CDF?我猜这是某种高斯分布

【问题讨论】:

  • 你找到不是最好的方法了吗?最后一句应该是什么意思,是个问题吗?
  • 生成 100 个随机数、将结果向量的长度归一化为 1 并重复 160 次有什么问题?
  • @mkrieger1 他们成对点积的 cdf 图,也就是计算 160C2 点积。
  • 我想我正在尝试仅使用操作 u ← unif (0, 1) 生成 d = 100 维的单个随机单位向量,该操作生成 0 和 1 之间的均匀随机变量,然后循环通过 160 次,然后绘制他们的产品

标签: python numpy random linear-algebra


【解决方案1】:
v = np.random.rand(100)
v_hat = v / linalg.norm(v)

这会给你一个随机的单位向量。 How to get the unit vector from a numpy array

【讨论】:

  • 随机数应该是正态分布的,而不是均匀分布的。另请参阅Sphere Point Picking
  • 同意@Peter O,它必须是高斯的,不均匀的才能在高维没有角点效果,否则它必须经过Box-Muller变换
  • @PeterO。我不知道这个问题的背景。我刚刚给出了生成随机单位向量的代码。
  • 小东西:我会在linalg.norm前面加上np,使用法与上面random的用法一致。我会自己进行此编辑,但 stackoverflow 不允许我进行那么小的编辑。
猜你喜欢
  • 2011-09-11
  • 1970-01-01
  • 2016-05-16
  • 1970-01-01
  • 2016-11-15
  • 2011-01-05
  • 2017-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多