如何使用python生成均匀分布在以(0,0)为中心的40 * 40矩形区域上的随机点?

Posted

技术标签:

【中文标题】如何使用python生成均匀分布在以(0,0)为中心的40 * 40矩形区域上的随机点?【英文标题】:How to generate random points uniformly distributed over 40*40 rectangular region centered at (0,0) using python? 【发布时间】:2021-05-02 00:30:35 【问题描述】:

我正在尝试使用 numpy 和 matplotlib 生成均匀分布在以 (0,0) 为中心的矩形区域上的随机点。

【问题讨论】:

meshgrid 正是为此目的而制作的。 ***.com/questions/36013063/… np.random.uniform(-20, 20, size=(1000, 2)) 将在-20,20 范围内生成 1000 个随机 xy 位置。 【参考方案1】:

正如@JohanC 在 cmets 中提到的,您需要 x 和 y 坐标在 -20 到 20 之间的点。要创建它们,请使用:

np.random.uniform(-20, 20, size=(n,2))

n 是您想要的点数。 绘制它们:

import matplotlib.pyplot as plt
plt.scatter(a[:,0],a[:,1])

n=100 点的样本图:

【讨论】:

【参考方案2】:

random points uniformly distributed 这句话不容易解释。这是我的解释之一,显示为可运行的代码。还给出了示例输出图。

import matplotlib.pyplot as plt
import numpy as np

# create array of meshgrid over a rectangular region
# range of x: -cn/2, cn/2
# range of y: -rn/2, rn/2
cn, rn = 10, 14  # number of columns/rows
xs = np.linspace(-cn/2, cn/2, cn)
ys = np.linspace(-rn/2, rn/2, rn)

# meshgrid will give regular array-like located points
Xs, Ys = np.meshgrid(xs, ys)  #shape: rn x cn

# create some uncertainties to add as random effects to the meshgrid
mean = (0, 0)
varx, vary = 0.007, 0.008  # adjust these number to suit your need
cov = [[varx, 0], [0, vary]]
uncerts = np.random.multivariate_normal(mean, cov, (rn, cn))

# plot the random-like meshgrid
plt.scatter(Xs+uncerts[:,:,0], Ys+uncerts[:,:,1], color='b');
plt.gca().set_aspect('equal')

plt.show()

您可以更改varxvary 的值,以更改绘图上点阵的随机程度。

【讨论】:

以上是关于如何使用python生成均匀分布在以(0,0)为中心的40 * 40矩形区域上的随机点?的主要内容,如果未能解决你的问题,请参考以下文章

在Python中创建生成稀疏矩阵(均匀分布高斯分布)

在Python中创建生成稀疏矩阵(均匀分布高斯分布)

如何检查python中变量的分布? [关闭]

以均匀随机分布生成任意斜率随机线性分布

证明一个随机生成的数是均匀分布的

用均匀分布随机变量生成泊松分布随机变量