我被分配以创建一个包含100个元素的数组,并使用rand()函数为其分配随机值,并检查数组中是否存在重复项。我已经完成了代码,并且运行良好,但是我不确定它是实际检查重复项还是只是打印未找到的重复项,因为我已经运行了很多次,但是甚至一次都没有显示“找到重复值”
#include <iostream>
using namespace std;
void main ()
{
int array1[100];
for (int a=0; a<100; a++)
{
array1[a]=rand();
cout<<array1[a]<<endl;
}
for(int b=0;b<100;b++)
{
for(int c=b+1;c<100;c++)
{
if(array1[b]==array1[c])
{
cout<<"Array contains duplicates\n";
break;
}
}
}
cout<<"No Duplicates found"<<endl;
}
最佳答案
由于rand()
返回[0, RAND_MAX)
中的一个值,因此它们中的两个在100个值中相等的可能性很小(保证RAND_MAX
至少为32k,但可能更大)。
您应该尝试缩小使用模运算符生成的可能数字的范围:rand()%MAX_VALUE
在[0, MAX_VALUE)
中产生一个值。
实际上,如果您选择MAX_VALUE < 100
,则可以通过解释pidgeonhole principle来确定是否具有重复项。
关于c++ - 为数组分配随机数并检查重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13674160/