c++生成随机100个在0-99随机数的数组,计算,储存所有数字出现的频率,并将这些数字及其频率从大到小依次显示出来
时间: 2023-07-16 18:17:26 浏览: 96
以下是代码实现:
```cpp
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
// 生成随机数种子
srand(time(0));
// 生成随机数数组
const int ARRAY_SIZE = 100;
int arr[ARRAY_SIZE];
for(int i = 0; i < ARRAY_SIZE; i++)
{
arr[i] = rand() % 100;
}
// 计算每个数字出现的频率
map<int, int> freq;
for(int i = 0; i < ARRAY_SIZE; i++)
{
freq[arr[i]]++;
}
// 将数字及其频率从大到小排序
vector<pair<int, int>> freq_vec(freq.begin(), freq.end());
sort(freq_vec.begin(), freq_vec.end(), [](const pair<int, int>& p1, const pair<int, int>& p2) {return p1.second > p2.second;});
// 输出结果
for(auto& p : freq_vec)
{
cout << p.first << ": " << p.second << endl;
}
return 0;
}
```
首先,使用 `srand(time(0))` 来初始化随机数生成器。然后,生成一个长度为100的随机数数组,使用 `map` 统计每个数字出现的频率。接着,将 `map` 中的数字及其频率复制到一个 `vector` 中,并使用 `sort` 函数将其从大到小排序。最后,遍历 `vector` 输出结果。
阅读全文