我想生成随机数并将它们保存在数组中。该'全部!但这就是重点,我想避免重复,而不是数组中的数字两次或更多次。
我的代码:
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
int k, temp;
cin >> k;
int sym[k];
srand(time(NULL));
for (int i = 0; i < k; i++)
{
temp = rand() % 25 + 97;
for(int j=0; j<i; j++)
{
while(temp == sym[j])
{
temp = rand() % 25 + 97; // 25 means a and 122 means z
}
}
sym[i] = temp;
}
for(int i=0; i<k; i++)
{
cout << sym[i] << endl;
}
return 0;
}
我仍然得到重复的结果。
答案 0 :(得分:0)
随机生成器并不意味着唯一的生成,尤其是当生成的数量很高且生成的边界或限制很小时,总会发生冲突......
避免重复元素替换此数组
int sym[k];
通过一个集合,它是一个不允许重复输入的容器......
std::set<int>
之后,你需要替换逻辑,因为循环k次并不意味着在集合中有k个元素,所以你需要做一个while循环,直到集合的大小达到极限 k
如果您需要一些未分类的生成值,而不是使用设置,请考虑实施 unordered_set
答案 1 :(得分:0)
我将使用std :: unordered_set来避免重复