1.思想:生成0到99这一百个随机数为例。先用个长度为100数组,值是对应的索引编号。然后把随机数生成函数的上限设置成100(即100以下的随机数)。生成的随机数当作数组的索引值,把这个索引值对应的值和数组的最后一位交换。这样第一个随机数就产生了并且存放在数组的最后一位中。在然后把随机数生成函数的上限值设置成99(即99一下的随机数),又得到一个随机数,再当作数组的索引值和数组的倒数第二位的值交换。这样就得到第二个随机数并存在数组的倒数第二位。
2.例子:a.假如数组arr,第一次产生的随机数是50
b.arr[50]和arr[99]交换值,arr[50]值为99,arr[99]值为50;
c.加入第二次随机数是60
d.则arr[60]和arr[98]交换值,即arr[60]值为98,arr[98]值为60;
e.如此循环下去。
3.C#代码:
for (int i = 0; i < 100;i++ )
{
numbers[i] = i;
}
Random rd = new Random();
int iup = numbers.Count();
for (int i = 0; i < 99; i++)
{
int result = rd.Next(iup);
int temp;
temp = numbers[result];
numbers[result] = numbers[iup - 1];
numbers[iup - 1] = temp;
iup--;
}