算法generate( )的使用方法:例如何在容器中生成随机数或生成菲波拉契数列等;
时间: 2024-02-22 16:59:55 浏览: 64
matlab 各种随机数的产生方法,有例子
4星 · 用户满意度95%
算法generate()是STL中的一个函数,用于生成序列中的元素。它可以用于生成随机数或生成菲波拉契数列等。
对于生成随机数,可以使用C++的随机数生成器std::default_random_engine和std::uniform_int_distribution来实现。如下所示:
```
#include <iostream>
#include <vector>
#include <random>
int main()
{
std::default_random_engine generator;
std::uniform_int_distribution<int> distribution(1, 6);
std::vector<int> v(10);
std::generate(v.begin(), v.end(), [&]() { return distribution(generator); });
for (auto i : v)
std::cout << i << " ";
std::cout << std::endl;
return 0;
}
```
这段代码使用generate()函数生成了一个包含10个随机数的vector,随机数的范围是1到6。
对于生成菲波拉契数列,可以使用generate()函数结合lambda表达式来实现。如下所示:
```
#include <iostream>
#include <vector>
int main()
{
std::vector<int> fib(10);
std::generate(fib.begin(), fib.end(), [n = 0, m = 1]() mutable {
auto tmp = n + m;
n = m;
m = tmp;
return n;
});
for (auto i : fib)
std::cout << i << " ";
std::cout << std::endl;
return 0;
}
```
这段代码使用generate()函数生成了一个包含10个斐波那契数列的vector。lambda表达式中的n和m分别表示当前数列中的两个数,每次返回n,并将n和m更新为下一个数列中的两个数。
阅读全文