我在xy平面上生成了一个名为y0=(a,b)
的随机点,如何生成另一个随机点(x,y)
10步除了y0
?
注意:距第一个点 10 步我并不是指欧几里得距离。我的意思是两点 (a,b) 和 (x,y) 之间的格子上的步数,由 |x-a|+|y-b|=10 给出
我的尝试(有时会给出错误的结果)。
import random
y0=(random.randint(0,50),random.randint(0,50))# here I generated the first point.
y=random.randint(0,50)
# I used the formula |x-a|+|y-b|=10.
x=(10 -abs(y-y0[1]))+y0[0] or x=-(10 -abs(y-y0[1]))+y0[0]
x0=(x,y)
最佳答案
假设您有一个点(x, y)
在平面上的任意位置创建另一个随机点:
<(x1, y2) = (random(), random())
从您的点获取向量到新点:
(vx, vy) = (x1-x, y1-y)
获取向量的长度
l
:l = sqrt(vx * vx + vy * vy)
使用
l
标准化向量(因此其长度为1):(vx, vy) = (vx/l, vy/l)
使向量长度为 10 步:
(vx, vy) = (vx * 10, vy * 10)
将其添加到原始点以到达所需点:
(x1, y2) = (x + vx, y + vy)
瞧:)
关于python - 如何在 xy 平面上生成距离 y0(a, b) 10 步的随机点 (x, y)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39615495/