我有一個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