今天碰到了这个问题,时间比较紧迫最后还是用了一个不太美的方法,这个就美多了,也可以作为随机序列生成的方法。
今儿写一段生成随机数的东西,需要用到产生N个“不重复”的随机数算法,研究了半天,找到一种快速的解决办法:
- int startArray[] = {0,1,2,3,4,5,6,7,8,9};//seed array
- int N = 10;//随机数个数
- int resultArray[] = new int [10];//结果存放在里面
- for(int i = 0; i < N; i++)
- {
- int seed = random(0, startArray.length - i);//从剩下的随机数里生成
- resultArray[i] = startArray[seed];//赋值给结果数组
- startArray[seed] = startArray[startArray.length - i - 1];//把随机数产生过的位置替换为未被选中的值。
- }
解决了,记下来以后用!
本文介绍了一种生成不重复随机数的有效算法。通过初始化一个有序数组并从中随机选取元素,然后将选中位置的元素替换为数组末尾未被选中的元素,实现了快速生成指定数量的不重复随机数。
5536

被折叠的 条评论
为什么被折叠?



