给定一个从0开始的n个连续数的整数数组,即
0,1,2,..n
我希望随机生成数字的排列,
说给出
0,1,2,3
可能的是3,1,2,0
如何轻松实现?
答案 0 :(得分:10)
首先创建一个所需大小的整数数组,并用增加的连续数字填充它;
int n = 10;
int[] array = new int[n + 1];
for (int i = 0; i <= n; i++)
{
array[i] = i;
}
Shuffle(array);
你可以使用Knuth / Fisher-Yates shuffle
/// <summary>
/// Knuth shuffle
/// </summary>
public void Shuffle(int[] array)
{
Random random = new Random();
int n = array.Count();
while (n > 1)
{
n--;
int i = random.Next(n + 1);
int temp = array[i];
array[i] = array[n];
array[n] = temp;
}
}
答案 1 :(得分:8)
使用LINQ和随机生成器这是一种简单的方法。
int[] numbers = new int[] { 1,2,3,4,5,6,7,8,9 };
Random rnd = new Random();
int[] MyRandomNumbers = numbers.OrderBy(x => rnd.Next()).ToArray();