Algorithm 无限平面上随机单元的定位算法

Algorithm 无限平面上随机单元的定位算法,algorithm,Algorithm,我正在寻找一种算法,在该算法中,我可以在给定视口(顶部、左侧、宽度和高度)内建立伪随机位置,而不必存储这些位置。假设我有一个从(0,0)到(100100)的视口。然后我会在(67,25)、(36,42)和(1,2)处找到元素。如果我将视口从(-50,-50)更改为(50,50),我仍然会找到(36,42)和(1,2),但我也可能会在(-14,7)和(-32,-20)处找到一个。我不知道怎样才能说得更清楚 处理整数的示例。它也可以修改为浮动 import random STEP = 10 #

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

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

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)
随机导入
步长=10#带有随机点的正方形大小
计数=6#正方形中随机点的数量
def get_点(x1、y1、x2、y2):
点数=[]
sx=(x1/步)*步
sy=(y1/步)*步
对于范围内的bx(sx,x2,阶跃):
对于范围内的by(sy,y2,步进):
随机种子(bx+by)
对于范围内的i(计数):
px=bx+random.randrange(步长)
py=by+random.randrange(步长)

如果x1是固定的窗口大小?窗口位置量化了吗?不,可能是任何东西。我不知道你说的量子化是什么意思。考虑到这在物理学中的意义,我不这么认为。我希望能够创建一个系统,在这个系统中,无限多的元素“随机”分布在无限平面上,我只能找到并渲染那些存在于我的特定窗口中的元素。只是一个警告:使用有限位数的计算无法覆盖无限平面。换言之,此任务需要最低有效位,即使您使用窗口走得很远,例如10^1000。我知道这一点。我正在寻找一种方法来计算一个给定的窗口。我曾经考虑过可能使用位置作为随机种子,从中构建一个随机模型,但我还没有将其具体化。有一种方法,我只是希望有人已经想出了一种算法,可以省去我的脑力劳动。也许我可以用一个随机数建立平面区域,该随机数是根据给定区域的位置生成的。然后我会有“无限”的有限区域。不过,我不知道当窗口与区域重叠时该怎么办。我想我必须建立所有重叠区域。我宁愿找一个更线性的,好的。为了得到均匀分布的结果,我认为您需要从具有适当平均值的泊松分布生成用于每个平方的
计数。(虽然二项式在离散情况下更合适。)这很酷,它可以扩展到更高的维度,我也在寻找(不是这个问题的一部分)。“我想这可能行得通。”我证实。对于具有更多尺寸的空间中的点,也可以使用相同的方法。