d维度中的均匀分布数据

8 投票
4 回答
16321 浏览
提问于 2025-04-17 04:08

我该如何在Python中生成一个均匀分布在[-1,1]^d范围内的数据呢?比如说,d是一个维度,比如10。

我知道怎么生成均匀分布的数据,比如用np.random.randn(N),但是维度这个概念让我很困惑。

4 个回答

2

你可以导入一个叫做 random 的模块,然后使用 random.random 来获取一个在 [0, 1) 范围内的随机数。你可以把这个数乘以2,然后减去1,这样就能得到一个在 [-1, 1) 范围内的随机数。

用这种方法生成 d 个值,得到的结果就是从立方体 [-1, 1)^d 中均匀抽取的随机数。

8

正如之前提到的,randn函数会生成符合正态分布的数字(也叫高斯分布)。如果你想要生成均匀分布的数字,就应该使用“uniform”。

如果你只想一次生成10个均匀分布的数字,可以使用:

import numpy as np
x = np.random.uniform(low=-1,high=1,size=10)

或者,如果你想一次生成很多(比如100个)均匀分布的数字,可以这样做:

import numpy as np
X = np.random.uniform(low=-1,high=1,size=(100,10))

现在,X[0]、X[1]等每个都有10个数字。

8

假设每个坐标之间是独立的,那么下面的代码可以生成一个在 [-1, 1)^d 范围内的随机点。

np.random.random(d) * 2 - 1

接下来这段代码会生成 n 个观测值,每一行代表一个观测值。

np.random.random((n, d)) * 2 - 1

撰写回答