为什么 return np.random.normal(10 - 1. / (x + 0.1), 0.5) 有效

why return np.random.normal(10 - 1. / (x + 0.1), 0.5) works

正如我们在 numpy.random.normal

的文档中所见

numpy.random.normal(loc=0.0, scale=1.0, size=None) Draw random samples from a normal (Gaussian) distribution.

The probability density function of the normal distribution, first derived by De Moivre and 200 years later by both Gauss and Laplace independently [R217], is often called the bell curve because of its characteristic shape (see the example below).

The normal distributions occurs often in nature. For example, it describes the commonly occurring distribution of samples influenced by a large number of tiny, random disturbances, each with its own unique distribution [R217]. Parameters:

loc : float

Mean (“centre”) of the distribution.

scale : float

Standard deviation (spread or “width”) of the distribution.

size : int or tuple of ints, optional

Output shape. If the given shape is, e.g., (m, n, k), then m * n * k samples are drawn. Default is None, in which case a single value is returned.

那为什么 np.random.normal(10 - 1. / (x + 0.1), 0.5)x = 10**np.linspace(-2, 0, 8)

时有效

您的代码绘制了 8 个数字,每个数字来自不同的高斯分布。 x 的值被视为分布参数,但每个值都用于生成该分布中的一个样本。

您的代码等同于:

np.random.normal(np.zeros(8), 0.5) + 10 - 1. / (x + 0.1)

即使用正态分布生成 8 个数字并将它们移动 x。