生成[iLow, iHigh]之间的无重复的iCount个int型随机数
来源:互联网 发布:aide源码 编辑:程序博客网 时间:2024/06/14 09:18
/*******************************************************************************
* Function : DistinctRandNumber
* Description : 生成[iLow, iHigh]之间的无重复的iCount个int型随机数,存放在数组aiNumber中
* Parameters : (1) const int iLow :要生成的随机数的最小值
* (2) const int iHigh :要生成的随机数的最大值
* (3) const int iCount : 要生成的随机数个数
* (4) int aiNumber[] : 存放生成的iCount个随机数
* Return : int =0表示成功,其它表示失败
* Notes : iLow应该小于iHigh,iCount应该不大于(iHigh - iLow + 1)
******************************************************************************/
int DistinctRandNumber(const int iLow, const int iHigh, const int iCount,
int aiNumber[])
{
if (iLow >= iHigh)
{
return -1;
}
// 最多可能产生的随机数个数
const int iTotal = iHigh - iLow + 1;
// 所需要的个数大于最多可能产生的随机数个数
if (iCount > iTotal)
{
return -1;
}
// 将随机数可能的取值先存放在一个数组中
int* piTemp = new int[iTotal];
if (!piTemp)
{
return -1;
}
// 初始化数组
int i;
for (i = 0; i < iTotal; i++)
{
piTemp[i] = i + iLow; // 随机数可能的取值
}
srand((unsigned int) time(NULL));
int iRange = iTotal;
int iIdx;
int j;
for (j = 0; j < iCount; j++)
{
iIdx = rand() % iRange; // iIdx为[0,iRange)范围内数组下标
aiNumber[j] = piTemp[iIdx]; // 取这个下标的随机数
piTemp[iIdx] = piTemp[iRange - 1]; // 将这个已经使用过的随机数从数组中移除(用最后一个元素覆盖)
iRange--; // 随机范围减1
}
delete[] piTemp;
return 0;
}
- 生成[iLow, iHigh]之间的无重复的iCount个int型随机数
- 生成无重复的随机数
- 生成无重复的随机数
- 生成无重复的随机数
- 生成5个不重复的随机数
- 生成N个不重复的随机数
- 生成N个不重复的随机数
- JAVA生成6个1-8的随机数,要求无重复。
- C++实现生成1—10000之间的10000个不重复的随机数
- ADO.NET生成100个1-100之间的不重复的随机数
- set集合 // 生成10-20,之间的10个随机数,要求不能重复
- 随机生成10个1--20之间的随机数,要求不能重复。(for循环解题)
- 随机生成自定义数量的无重复的随机数
- 在较大范围内生成大量的无重复的随机数
- java中生成无重复随机数的2种方法
- 生成无重复随机数的2种方法
- java生成无重复随机数的2种方法
- java生成无重复随机数的2种方法
- [转Iphone]iphone开发阶段总结(一)
- 网站PR的提升和购买高质量
- [转Iphone]iphone开发阶段总结(一) 基础知识
- [转Iphone]iphone开发阶段总结(一) 基础知识
- 算法
- 生成[iLow, iHigh]之间的无重复的iCount个int型随机数
- 一个项目涉及到的50个Sql语句(整理版)
- 基于UML的Blog系统分析与设计之四------用例描述
- 热门话题:使用WCF实现SOA面向服务编程—— 架构设计(附原代码)
- [转Iphone]iphone开发阶段总结(二)代码知识
- android 访问权限大全
- 高质量的C/C++编程【某市第九研究所嵌入式软件开发工程师面试题】
- PHP中的define与const
- 一步步学汇编(三)开始编写程序