最近用到一维硬核随机点过程模拟车辆在路上的分布。
代码如下:
def mhcp(rho, len, dist)->list:
"""
rho:泊松分布点密度;
len:分布在长为len的一维空间上;
dist:硬核距离
"""
num = np.random.poisson(rho)
coor = np.random.rand(num) * len # mark
sort = np.sort(coor)
mhcp = []
i, j = 0, 0
try:
mhcp.append(sort[0])
while i < num: # select
if sort[i] - sort[j] >= dist:
mhcp.append(sort[i])
j = i
i += 1
except IndexError:
pass
return mhcp
调用示例:
temp = mhcp(50, 1000, 20)
plt.scatter(temp, np.zeros_like(temp))
plt.show()
结果如下: