【发布时间】:2017-04-10 17:03:50
【问题描述】:
我想生成随机数并将它们保存在一个数组中。就是这样!但重点是,我想避免重复,并且数组中没有数字两次或多次。
我的代码:
#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;
}
我仍然得到重复的结果。
【问题讨论】:
-
如果 temp == sym[1],您会生成一个新的 temp,但不会与 sym[0] 重新比较。
-
你可以直接使用
a和z来计算你的常数。 -
当
k不是常量表达式时,int sym[k];不是标准 C++,应该避免这种情况(最好使用std::vector,如果不可能,new)。