产生N个不重复的随机数的快速算法
2015-06-18 10:55
246 查看
转自:http://blog.csdn.net/devfun/article/details/6534476和http://www.cnblogs.com/Imageshop/p/3430742.html
今儿写一段生成随机数的东西,需要用到产生N个“不重复”的随机数算法,研究了半天,找到一种快速的解决办法:
今儿写一段生成随机数的东西,需要用到产生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];//把随机数产生过的位置替换为未被选中的值。 }或者
private static int[] RandPerm(int N) { int X; Random Rnd = new Random(Environment.TickCount); int[] TempArray = new int ; int[] Value = new int ; for (X = 0; X < N; X++) TempArray[X] = X; for (X = 0; X < N; X++) { int Seed = Rnd.Next(0, N - X); //从剩下的随机数里生成 Value[X] = TempArray[Seed]; //赋值给结果数组 TempArray[Seed] = TempArray[N - X - 1]; //把随机数产生过的位置替换为未被选中的值。 } return Value; }
相关文章推荐
- Android 框架炼成 教你如何写组件间通信框架EventBus
- monkeyrunner 学习笔记(按键学习)
- [Java编程思想-学习笔记]第4章 控制执行流程
- 总理推理算法(高效率)
- 《大道至简》读书笔记一
- java 中关于System property 之 file.encoding
- linux上redis安装
- Java EE RPC,Webservice,RMI,JMS 的关系
- ESXi自动与vcenter断开连接
- PHP抽奖程序之几率算法
- 将博客搬至51CTO
- iOS开发系列--Grand Central Dispatch 基础教程:Part 1/2
- 将博客搬至51CTO
- 14.正规化
- Java-数据结构与算法-选择排序与冒泡排序
- html 超链接(a)取消
- elastisearch集群rest接口
- os认证
- oracle中sign函数
- hbase on spark -use HiveCxt