Fisher-Yates 在列表框中随机播放? C# Windows 表单
Fisher-Yates Shuffle in a Listbox? C# Windows Forms
我有一个包含列表框和四个单选按钮的表单。每个单选按钮将一定数量的数字添加到列表框(100、1,000、10,000 和 100,000)。我正在尝试应用 Fisher-Yates Shuffle 算法来确保数组中没有重复的数字。我已经尝试了网上建议的所有方法,但没有多大帮助。当我 运行 下面的代码时,列表框只显示一堆零,而不是随机排列的数字 1-100。是不是我遗漏了什么或做错了什么?
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
尝试更改行:
array = new int[Size];
收件人:
array = Enumerable.Range(0, Size).ToArray();
我有一个包含列表框和四个单选按钮的表单。每个单选按钮将一定数量的数字添加到列表框(100、1,000、10,000 和 100,000)。我正在尝试应用 Fisher-Yates Shuffle 算法来确保数组中没有重复的数字。我已经尝试了网上建议的所有方法,但没有多大帮助。当我 运行 下面的代码时,列表框只显示一堆零,而不是随机排列的数字 1-100。是不是我遗漏了什么或做错了什么?
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
尝试更改行:
array = new int[Size];
收件人:
array = Enumerable.Range(0, Size).ToArray();