在给定步长的情况下查找范围内的不同数字

Finding distinct numbers in a range, given some step size

我一直在尝试想出一些数学公式来找到给定范围内具有可变步长的不同数字。

首先我在一维中尝试,比如在 [0,10] 范围内,步长为 0.1。 解:在0.1-1,1.1-2,.......,9.1-10之间。每个子范围有 10 个数字,所以总数 #=100。包括0,我们得到100+1=101.

接下来是求网格(2D)中的总点数。 解决方案:在一个网格中,有两个轴 x 和 y,我们需要找到总的 # 点。 x 在 [-10,10] 范围内,y 在 [-10,10] 范围内,步长为 0.1。 对于 2D 它变得复杂,并且在更高的维度和不同的步长下,它变得非常混乱。我只是想知道是否有一个通用的公式或方法来找到这些点。

Grid or the 2D space looks something like this

在更高的维度上并没有明显的复杂,因为更高维度的最佳包装是网格。假设您在 dx 的步长中有 x 在闭范围 [x1, x2] 中,在 dy 的步长中有 y 在闭范围 [y1, y2] 中.在 x 轴上,有 1 + floor((x2 - x1) / dx) 个值,在 y 轴上,有 1 + floor((y2 - y1) / dy) 个值,所以在二维网格中有

(1 + floor((x2 - x1) / dx)) * (1 + floor((y2 - y1) / dy))

不同点。

这推广到更高的维度(假设 dxdyd... 是常数)。因此,只需找到每个维度中不同点的数量并将这些值相乘即可得到 n 维区域中不同点的数量。