gpt4 book ai didi

在无限平面上定位随机元素的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:17:30 25 4
gpt4 key购买 nike

我正在寻找一种算法,可以在给定视口(viewport)(顶部、左侧、宽度高度)内建立伪随机位置,而无需存储这些位置。假设我有一个从 (0, 0) 到 (100, 100) 的视口(viewport)。然后我会在 (67, 25)、(36, 42) 和 (1, 2) 处找到元素。如果我将该视口(viewport)从 (-50, -50) 更改为 (50, 50),我仍然会找到 (36, 42) 和 (1,2),但我也可能会在 (-14 , 7) 和 (-32, -20)。我不知道怎样才能让这更清楚。

最佳答案

处理整数的示例。它也可以修改为 float 。

import random

STEP = 10 # size of square with random points
COUNT = 6 # number of random points in the square

def get_points(x1, y1, x2, y2):
points = []
sx = (x1 // STEP) * STEP
sy = (y1 // STEP) * STEP
for bx in range(sx, x2, STEP):
for by in range(sy, y2, STEP):
random.seed(bx + by)
for i in range(COUNT):
px = bx + random.randrange(STEP)
py = by + random.randrange(STEP)
if x1 <= px < x2 and y1 <= py < y2:
points.append((px, py))
return points

print get_points(0, 0, 10, 10)
print get_points(0, 0, 100, 100)

整个平面被包含随机点的方 block 覆盖,具体取决于方 block 的位置。

找到左下角方 block 的位置 (sx, sy),然后计算所选窗口所需的所有方 block 的位置 ( >bx, by).您初始化随机数生成器,然后生成正方形中所有必要的点(pxpy)。但实际上只考虑窗口内的点。

只是为了灵感。

关于在无限平面上定位随机元素的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31216385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com