我目前有一个程序,我需要以随机顺序访问图像的每个像素。我当前的方法是存储所有坐标组合并将它们打乱,但这会导致较大图像使用过多内存并导致内存不足崩溃。
是否有一些函数,其中 f(1) -> f(n*n) 唯一地覆盖所有坐标,但以随机顺序排列,而不使用太多时间或空间?
不必完全随机,所选的点只需分散即可。 最好是用 Javascript 编写,但有解释也可以。
我不认为存在 O(1) 解决方案,但如果完全随机性并不重要,请将图像划分为 n 区域,然后(线性或随机)访问每个区域中偏移量 m 处的每个像素.
作为简化示例,您可以仅随机化 X 坐标,然后串行或随机访问每列中的每个像素;但是将图像分割成相同大小的矩形的其他排列将使遍历如何进行变得不那么明显。
例如,将任何图像切成 256x256 的矩形,您可以将原始算法的空间需求减少到 1/65536。