我正在尝试用python编写一个生成器,该生成器使用高斯(正态)分布生成随机数的N * M矩阵。
给出N和M以及高斯随机场的数量(正态分布)。矩阵中的数字也应介于0和1之间。 例如,从5个不同的高斯分布生成的100 * 80浮点数矩阵介于0和1之间。这些分布的均值和方差可以任意选择。哪个分布生成哪个行以及生成多少行也是任意的。重要的是,一行中的数字是在相同的正态分布中生成的。 (或者说,每一行都是存在于特定的多元高斯分布中的点)我已经尝试过t
。这里我不知道如何通过不同的分布来生成行,0.02
太复杂了,难以理解。我一直在寻找很长一段时间,既找不到通过0到1之间的数字进行限制的好方法,也找不到从不同的正态分布生成数字的方法。
答案 0 :(得分:0)
考虑到您已经拥有sigma
和mu
(指示哪一行将使用哪种发行版):
sigma = np.array((1, 2, 3))
mu = np.array((-1, -2, -3))
只需构建结果分布(3行/不同分布,此处10列):
samples = np.random.standard_normal((3, 10)) * sigma[:, None] + mu[:, None]
请注意,高斯分布是无界的,因此您必须进行裁剪:
samples = np.clip(samples, 0, 1)
当然,根据sigma
和mu
的值,您不会得到值的高斯分布。