算法generate( )的使用方法:例如何在容器中生成随机数或生成菲波拉契数列等;
时间: 2024-03-01 12:51:08 浏览: 17
算法`generate()`是C++ STL中的一个算法函数,它可以用于生成序列。其中,第一个参数是要生成序列的容器的起始迭代器,第二个参数是要生成序列的容器的结束迭代器,第三个参数是用于生成序列的函数或随机数生成器。
下面分别介绍如何使用`generate()`函数生成随机数和生成斐波那契数列。
1. 生成随机数
使用`std::generate()`函数和C++11中的随机数引擎`std::default_random_engine`可以生成指定范围内的随机数序列。例如,生成10个在[0, 100]之间的随机数,可以这样实现:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
#include <random>
int main()
{
std::vector<int> v(10);
std::default_random_engine e; // 默认的随机数引擎
std::uniform_int_distribution<int> u(0, 100); // 生成[0, 100]之间的随机整数
std::generate(v.begin(), v.end(), [&]{ return u(e); }); // 用generate函数生成随机数序列
for (auto x : v)
std::cout << x << " ";
std::cout << std::endl;
return 0;
}
```
2. 生成斐波那契数列
使用`std::generate()`函数和lambda表达式可以生成斐波那契数列。例如,生成前20个斐波那契数列,可以这样实现:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
int main()
{
std::vector<int> v(20);
int a = 0, b = 1;
std::generate(v.begin(), v.end(), [&]{ int c = a + b; a = b; b = c; return a; }); // 用generate函数生成斐波那契数列
for (auto x : v)
std::cout << x << " ";
std::cout << std::endl;
return 0;
}
```
以上就是使用`generate()`函数生成随机数和生成斐波那契数列的方法。