【C++】如何随机生成整数不重复进行取用

最近忙公司项目的时候需要实现一个功能

网上的方法多到无从选择,例如洗牌算法等等

后来还是自己弄了一个更加贴切自己需求的接口

——————————————————————————                      下面是正文     ——————————————————————————

再做项目时需求如下:1.从一堆指定范围内随机生成的整数中抽一个数出来进行条件判断。

                                    2.如果这个数符合某个条件则从这堆数中去除,下次再从这堆数中随机抽数的时候就不会再抽到重复数。

                                    3.如果这个数不符合某个条件,则不进行处理。

BYTE Random_Hopper(vector<int> Hopper)
{
	if (Hopper.size() == 0)
	{
		return -1;
	}
	srand((unsigned)time(NULL));
	int count = rand()%Hopper.size();
	BYTE bRet,tmp;

    tmp = //某个条件判断;

	if (tmp != ...)
	{
		Hopper[count] = Hopper.back();
		Hopper.pop_back();
		bRet = Random_Hopper(Hopper);
	}//符合某个条件,从这堆数中去除这个数
	else   bRet = (BYTE)Hopper[count];

	return bRet;
}

代码核心是:1.Hopper为指定范围内随机生成的整数的容器。

                      2.去除某个数所选用的方法是使用容器里最后一个数填补重复数,然后再进行递归,一直到所有的数都被剔除。

发布了54 篇原创文章 · 获赞 103 · 访问量 7万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览