2016-06-07 52 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