python - 如何在 xy 平面上生成距离 y0(a, b) 10 步的随机点 (x, y)?

标签 python random

我在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)

  1. 在平面上的任意位置创建另一个随机点:(x1, y2) = (random(), random())

    <
  2. 从您的点获取向量到新点:(vx, vy) = (x1-x, y1-y)

  3. 获取向量的长度l:l = sqrt(vx * vx + vy * vy)

  4. 使用l标准化向量(因此其长度为1):(vx, vy) = (vx/l, vy/l)

  5. 使向量长度为​​ 10 步:(vx, vy) = (vx * 10, vy * 10)

  6. 将其添加到原始点以到达所需点:(x1, y2) = (x + vx, y + vy)

瞧:)

关于python - 如何在 xy 平面上生成距离 y0(a, b) 10 步的随机点 (x, y)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39615495/

相关文章:

python - 符号 |考虑 Flask 教程

Python - Mailchimp 批量 PUT 请求

scala - 为什么 scala 在此模运算中返回超出范围的值?

linux - 在不保持组顺序的情况下改组大型文本文件

c++ - 我应该如何为遗传算法生成随机数?

java - 了解 Java 随机下一个整数与绑定(bind)算法

python - 在python中添加windows命令

python - 查找项目中所有python包

python - 将 csv 输入处理到 Python 字典中时,如何跳过行或检查单个构造行中的数据类型

c# - 范围之间的随机 DateTime - 不统一输出