我被分配以创建一个包含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/

10-13 08:33
查看更多