产生N个不重复的随机数的快速算法
2024-10-19 22:15:13
//seed array
int startArray[] = {,,,,,,,,,};
//随机数个数
int N = ;
//结果存放在里面
int resultArray[] = new int [];
for(int i = ; i < N; i++)
{
//从剩下的随机数里生成
int seed = random(, startArray.length - i);
//赋值给结果数组
resultArray[i] = startArray[seed];
//把随机数产生过的位置替换为未被选中的值
startArray[seed] = startArray[startArray.length - i - ];
}
今儿写一段生成随机数的东西,需要用到产生N个“不重复”的随机数算法,研究了半天,找到一种快速的解决办法。
http://blog.csdn.net/devfun/article/details/6534476
最新文章
- 如何区别exists与not exists?
- 《Entity Framework 6 Recipes》中文翻译系列 (13) -----第三章 查询之使用Entity SQL
- linux svn 服务端搭建
- 【状态模式】 State Pattern
- [转载] linux 程序运行过程中替换文件
- 开发设计模式(八)抽象工厂模式(Abstract Factory Pattern)
- SQLServer 跨服务器查询的两个办法
- 离线使用nuget
- Java动态代理机制——JDK
- 本地存储sessionStorage 、 localStorage 、cookie整理
- 转:Cocoa、Foundation、UIKit、Objective-c、XCode、Interface Builder的概念
- 201521123064 《Java程序设计》第7周学习总结
- TrueType字体的后缀名解释
- Python——一个简单的类的创建和应用
- 推荐一款MongoDB的客户端管理工具--nosqlbooster
- mysql-SQL Error: 1205, SQLState: 41000
- python框架之Django(12)-认证系统之auth模块
- java String 类型总结
- java 加密工具类(MD5、RSA、AES等加密方式)
- 寻找复杂背景下物体的轮廓(OpenCV / C++ - Filling holes)