Sicher. Wählen Sie den ersten Punkt oder den zweiten Punkt nach dem Zufallsprinzip aus, generieren Sie dann eine Verteilung mit einem einzelnen Skalierungsparameter in Polarkoordinaten, und verschieben Sie dann um Mittelpunktposition. Wählen Sie eine angemessene radiale Verteilung (Gaußsche in dem folgenden Code, exponentielle oder Cauchy könnte funktionieren auch)
import math
import random
import matplotlib.pyplot as plt
def select_point():
p = random.random()
if p < 0.5:
return 0
return 1
def sample_point(R):
"""
Sample point inpolar coordinates
"""
phi = 2.0 * math.pi * random.random() # angle
r = R * random.gauss(0.0, 1.0) # might try different radial distribution, R*random.expovariate(1.0)
return (r * math.cos(phi), r * math.sin(phi))
def sample(R, points):
idx = select_point()
x, y = sample_point(R)
return (x + points[idx][0], y + points[idx][1])
R = 1.0
points = [(7.1, 3.3), (4.8, -1.4)]
random.seed(12345)
xx = []
yy = []
cc = []
xx.append(points[0][0])
xx.append(points[1][0])
yy.append(points[0][1])
yy.append(points[1][1])
cc.append(0.8)
cc.append(0.8)
for k in range(0, 50):
x, y = sample(R, points)
xx.append(x)
yy.append(y)
cc.append(0.3)
plt.scatter(xx, yy, c=cc)
plt.show()
Bild
![enter image description here](https://i.stack.imgur.com/dVNqH.png)