取N个随机数字

来源:互联网 发布:淘宝买花种子哪家靠谱 编辑:程序博客网 时间:2024/05/16 17:08
自己写的一个小算法,从max个数中去num个随机数字出来,比方说从10个数中取4个随机数字:1、5、6、9

下面这个函数就是为了实现这个功能写的,里面主要涉及到了一个算法如何高效打乱0到max个数字,但是这个写的还不是最好的,效率只是到了N的级别,更深一点的暂时也没想那么多,别的到没什么技术含量。

// 从MaxNum个数字中获取RandNum个不相同的数字vector<int> GetDiffentRandNum(const int iRandNum, const int iMaxNum){vector<int> oNumVec;if (iMaxNum < iRandNum){return oNumVec;}int i=0;vector<int> oMaxNum(iMaxNum,0);for (i=0; i<iMaxNum; ++i){oMaxNum[i] = i;}int iTmp = 0;int iRandIndex = 0;for (i=0; i<iRandNum; ++i){iRandIndex = rand()%(iMaxNum-i);iTmp = oMaxNum[i];oMaxNum[i] = oMaxNum[i+iRandIndex];oMaxNum[i+iRandIndex] = iTmp;oNumVec.push_back(oMaxNum[i]);}return oNumVec;}


0 0
原创粉丝点击