如何產生多個不同的隨機數。
這裏我們輸入要返回隨機數的範圍,以及隨機數的個數,返回一個存儲隨機數的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