如何使用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()
您可以更改varx
和vary
的值,以更改绘图上点阵的随机程度。
【讨论】:
以上是关于如何使用python生成均匀分布在以(0,0)为中心的40 * 40矩形区域上的随机点?的主要内容,如果未能解决你的问题,请参考以下文章