c++ 多個不同隨機數的產生

  如何產生多個不同的隨機數。

  這裏我們輸入要返回隨機數的範圍,以及隨機數的個數,返回一個存儲隨機數的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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章