如何产生多个不同的随机数。
这里我们输入要返回随机数的范围,以及随机数的个数,返回一个存储随机数的vector
函数如下:
// input: int max 期待随机数的最大值,int min,期待随机数的最小值,int num 需要的随机数的个数
// output: vector<int> 装载产生的随机数(随机数都是不同的)
std::vector<int> CreateRandomNums(int min,int max, int num)
{
std::vector<int> res;
res.clear();
if (max - min + 1 < num)
{
return res;
}
srand(time(0));
for (auto i{0}; i < num; i++)
{
while (true)
{
auto temp{ rand() % (max + 1 - min) + min };
auto iter{ find(res.begin(),res.end(),temp) };
if (res.end() == iter)
{
res.push_back(temp);
break;
}
}
}
return res;
}
函数产生的随机数的范围是[min,max],调用方式如下
auto randoms = CreateRandomNums(1, 10, 10);
for_each(randoms.cbegin(), randoms.cend(),
[](int val)-> void {std::cout << val << std::endl; });
使用for_each需要引入头文件#include<algorithm>,使用当前时间作为种子需要引入头文件#include<ctime>.
这里产生的随机数不重复,所以例子的调用结果可能是
2, 3, 6, 7, 9, 10, 1, 4, 5, 8