不重复随机数生成

来源:互联网 发布:优化电脑最好的软件 编辑:程序博客网 时间:2024/05/16 15:01

算法总体思路是:初始化一个存有整型0~N的数组,然后生成随机数作为索引取一个数组元素,将数组末尾的元素赋值给取走的位置,生成随机数上限减一,循环,可以保证取不到相同的数值。

 public int[] get_randam(int N, int k)        {            int[] index = new int[N];            for (int i = 0; i < N; i++)                index[i] = i;            Random r = new Random();            //用来保存随机生成的不重复的k个数            int[] result = new int[k];            int site = N;//设置下限            int id;            for (int j = 0; j < k; j++)            {                id = r.Next(1, site - 1);                //在随机位置取出一个数,保存到结果数组                result[j] = index[id];                //最后一个数复制到当前位置                index[id] = index[site - 1];                //位置的下限减少一                site--;            }            return result;        }


0 0
原创粉丝点击