算法generate( )的使用方法:例如何在容器中生成随机数或生成菲波拉契数列等
时间: 2024-02-28 16:55:16 浏览: 185
利用Markov算法根据原始文本的统计规律生成随机文本,利用容器vector, map实现。包含详细测试数据.zip
算法generate()是C++ STL中的一个函数,用于在指定范围内生成一组元素。它的语法为:
```c++
generate(first, last, gen); // 生成[first, last)范围内的元素,gen是一个可调用对象
```
其中,first和last分别是容器中某个范围内的元素的迭代器,gen是一个可调用对象,用于生成元素。
下面是如何使用generate()生成随机数和生成斐波那契数列的示例代码:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
#include <random>
// 生成随机数
void generate_random(std::vector<int>& v, int n) {
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(1, 100);
std::generate_n(std::back_inserter(v), n, [&]() { return dis(gen); });
}
// 生成斐波那契数列
void generate_fibonacci(std::vector<int>& v, int n) {
std::generate_n(std::back_inserter(v), n, [i = 0, j = 1]() mutable {
int k = i + j;
i = j;
j = k;
return i;
});
}
int main() {
std::vector<int> v1;
generate_random(v1, 10);
std::cout << "随机数: ";
std::copy(v1.begin(), v1.end(), std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
std::vector<int> v2;
generate_fibonacci(v2, 10);
std::cout << "斐波那契数列: ";
std::copy(v2.begin(), v2.end(), std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
return 0;
}
```
在上面的代码中,generate_random()函数利用C++11中的随机数库生成随机数,而generate_fibonacci()函数则使用lambda表达式生成斐波那契数列。
阅读全文