我已經環視相當多,但似乎找不到滿意的答案。我想用唯一的數字填寫5x5。在第1欄中,它只能是1-5之間的數字,第2欄中的數字16-30等等,直到第5欄的數字在61-75之間。它是賓果董事會。我已經嘗試了幾件事,但沒有一件能夠工作,我似乎找不到用我的規格填充陣列的方法。我到處看到它只是預填充數組的一些例子,或者代碼是爲我提高的方法。如何用不同的行/列中的唯一隨機數填充數組
我不久前創建了一個程序,它創建一個數字1-75的常規數組,然後用fisher/yates算法對其進行混洗。這是我應該繼續使用還是應該從頭開始? enter code here
static void Main(string[] args)
{
string choise = "";
while (choise != "q" && choise != "Q")
{
Console.Clear();
Console.WriteLine("[1] for a random row of numbers! \n[2] to start the game!
\n[Q] to quit! \nPress enter after your selection.");
choise = Console.ReadLine();
if (choise == "1")
{
RandomNum.randomTal();
}
(another class)
static Random rnd = new Random();
public static void Shuffle<T>(T[] array)
{
Console.Clear();
for (int i = 0; i < array.Length; i++)
{
int r = i + (int)(rnd.NextDouble() * (array.Length - i));
T t = array[r];
array[r] = array[i];
array[i] = t;
}
}
(and another class)
class RandomNum
{
public static void randomTal()
{
int[] sifferArray = Enumerable.Range(1, 56).ToArray();
shuffle.Shuffle(sifferArray);
foreach (var item in sifferArray)
{
Console.WriteLine(item);
}
Console.WriteLine("Press any key to go back.");
Console.ReadKey();
}
fisher/yates算法應該是完美的。假設你想要16 * 30之間的5 *獨特*隨機數。做'Enumerable.Range(16,15).ToArray()。Shuffle()。拿(5);' – dbc 2014-12-13 00:26:34
很抱歉,我真的不知道這樣做。如果我嘗試在RandomNum類中放置它,那麼在「shuffle」下面會顯示「expected」。而枚舉不適用於我認爲的2D數組。 – halalbin 2014-12-13 00:57:20