algorithm - 在没有临时存储的情况下以伪随机顺序访问网格中的每个单元格

标签 algorithm

假设您有一个 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/

相关文章:

将多个集合作为一个访问的Java方法,无需连接

python - 在无序列表中查找最长的有序序列

algorithm - 我应该在递归函数中的什么地方放置计数器?

algorithm - 如何最好地从查找表中获取数据

c - 高效计算三个无符号整数的平均值(无溢出)

php - 遍历多个数组值以填充另一个数组中的桶的算法

c# - 事件选择。这样做的最佳方法是什么

c++ - 检查元素是否在两个 vector 中的最快方法

c - 质数算法

java - 程序在数组中查找与给定值异或的对