假设您有一个 NxN 网格,并且您希望以伪随机顺序访问每个单元格一次。顺序不必非常随机,但它必须是可播种的,以便可以对网格单元排序进行不同的排列。有没有一种方法可以做到这一点,而无需简单地生成所有单元格坐标的列表、随机排列它并从中索引出来?我的意思是,我想要一个可以将索引 (i,j)
转换为 (i',j')
以一对一、完全覆盖的方式。
后续(实际上是预期的)问题:对于我们只想访问 i>j
(下三角)的那些元素的 NxN 网格是否可以做同样的事情?
最佳答案
由于范围 0..ROWS*COLS-1 中的每个数字 N 都确定性地指向一个单元格(N DIV ROWS,N MOD ROWS)这个问题等同于 this SO question .它有一些有用的答案和引用。
关于algorithm - 在没有临时存储的情况下以伪随机顺序访问网格中的每个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1971481/