随机数生成不重复的一组数(类似于抓阄)

来源:互联网 发布:电气画图用什么软件 编辑:程序博客网 时间:2024/06/02 13:07

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--;
            }

0 0
原创粉丝点击