我有一个2D整数数组,5x5的,我已经提出,随机地生成的数字1 - 5在每个阵列单元的:随机产生一个唯一的数字网格
public int[,] generateGrid()
{
int seed = DateTime.Now.Second; // generate seed
Random rand = new Random(seed); // initialise random number with seed
int[,] grid = new int[_gridSize, _gridSize]; // create 2D array for grid
for (int i = 0; i < _gridSize; i++) // loop through rows
{
for (int j = 0; j < _gridSize; j++) // loop throug columns
{
int value = 0; // initialise the value to be entered into cell
while (value == 0) // while value is invalid ("0") keep generating new number
{
value = rand.Next() % _gridSize + 1; // generate value from 0 - gridsize
grid[i, j] = value; // input value. Note: if value = 0, the loop will regenerate a new value
}
}
}
return grid;
}
现在这个代码这是工作。 (不知道效率 - 任何额外的效率建议将有所帮助。)
但我的问题是,每列和每一行只能包含数字1-5 一次! (而不是像Sudoku),我不知道如何做到这一点(或者做到这一点的最佳方式)。
我的第一个想法是创建一个堆栈,并推动堆栈中每行创建的所有值,然后检查它是否已包含该值。如果是的话,生成一个新的值,再等 检查,但迭代堆栈是一个坏主意,还,这是很好的检查行,但是当它涉及到检查列的唯一性,它变得有点困难!
所以基本上,我怎样才能让所有的行和列都是唯一的,但每次都能随机生成。什么是最好的方法来做到这一点?
和问题是什么? – ColWhi 2011-05-17 13:43:08
和你的问题是...? – Syjin 2011-05-17 13:43:11
什么问题? – Marcelo 2011-05-17 13:43:33