2016-06-07 75 views
0

我有一個包含一個列表框和四個單選按鈕的窗體。每個單選按鈕都將一定數量的數字添加到列表框(100,1,000,10,000和100,000)。我試圖應用Fisher-Yates Shuffle算法來確保數組中沒有重複的數字。我已經嘗試了所有在線提示,並沒有太多幫助。當我在下面運行我的代碼時,列表框只顯示一堆零,而不是數字1-100。有什麼我失蹤或我做錯了什麼?Fisher-Yates在列表框中隨機播放? C#Windows窗體

private void randNumGenerator(int Size) 
    { 
     Numbers.Items.Clear(); 
     array = new int[Size]; 

     Shuffle(array); 

     foreach(int value in array) 
     { 
      Numbers.Items.Add(value); 
     } 
    } 
    #endregion 

    #region Shuffle Algorithm 
    static Random numGenerator = new Random(); 
    static void Shuffle(int[] array) 
    { 
     for (int i = array.Length - 1; i >= 0; i--) 
     { 
      int r = numGenerator.Next(0, i); 
      int temp = array[r]; 
      array[r] = array[i]; 
      array[i] = temp; 
     } 
    } 
    #endregion 
+0

'陣列=新INT [尺寸];隨機播放(數組);'你發送一個零數組在這裏洗牌。顯示的結果是正確的。嘗試使用'for'循環來填充數組 – ASh

回答

1

嘗試改變行:

array = new int[Size]; 

到:

array = Enumerable.Range(0, Size).ToArray(); 
+0

奇怪的是,它的工作!非常感謝! – HylianSith