Я хотел бы генерировать N точек в круге C центра (0,0) и радиуса R = 200. Точки следуют за распределением Пуассона. Другими словами, я хотел бы генерировать N однородный точечный процесс Пуассона (HPPP) внутри C.Как создать однородный процесс Пуассона в круге?
Я нашел эту статью Generating Homogeneous Poisson Processes. В разделе 2 есть именно то, что я хочу. В частности, в стр.4, Алгоритм 3 генерирует точки HPPP внутри С.
Я реализовал этот код в Python следующим образом:
""" Main Codes """
import matplotlib.pyplot as plt
import numpy as np
lamb = 0.0005 # the rate
pi = np.pi # pi = 3.14...
r = 200 # the radius of the circle C
mean = lamb * pi * r ** 2 # the mean of the Poisson random variable n
n = np.random.poisson(mean) # the Poisson random variable (i.e., the number of points inside C)
u_1 = np.random.uniform(0.0, 1.0, n) # generate n uniformly distributed points
radii = np.zeros(n) # the radial coordinate of the points
for i in range(n):
radii[i] = r * (np.sqrt(u_1[i]))
u_2 = np.random.uniform(0.0, 1.0, n) # generate another n uniformly distributed points
angle = np.zeros(n) # the angular coordinate of the points
for i in range(n):
angle[i] = 2 * pi * u_2[i]
""" Plots """
fig = plt.gcf()
ax = fig.gca()
plt.xlim(-300, 300)
plt.ylim(-300, 300)
circ = plt.Circle((0, 0), radius=200, color='r', linewidth=2, fill=False)
plt.polar(angle, radii, 'bo')
ax.add_artist(circ)
plt.show()
Во-первых, я не могу видеть точки внутри круга. Во-вторых, я не знаю, почему точки не генерируются внутри круга должным образом. Есть ли проблема в моем коде?
Выходной сигнал приведен ниже: Круг C находится в красном.