以伪随机顺序访问网格中的每个单元格而无需临时存储

Vic*_*Liu 4 algorithm

假设您有一个NxN网格,并且您希望以伪随机顺序访问每个单元格一次.该顺序不必非常随机,但它必须是可播种的,以便可以对网格单元排序进行不同的排列.有没有办法做到这一点,而不是简单地生成所有单元格坐标的列表,随机置换它,并索引它?我的意思是,我想要一个公式(或者更确切地说,构建这样一个公式的一般方法),它可以将索引(i,j)转换(i',j')为一对一,完全覆盖的方式.

后续(实际意图)问题:对于NxN网格可以做同样的事情,我们只想访问那些i>j(下三角形)的元素吗?

Hen*_*man 6

由于0..ROWS*COLS-1范围内的每个数字N确定地指向一个单元格(N DIV ROWS,N MOD ROWS),因此该问题等同于该SO问题.它有一些有用的答案和参考.