在数组中分配唯一的随机整数(C)

时间:2015-03-28 16:39:46

标签: c arrays random unique

我很努力地挣扎这么久,我可以用随机数填充我的数组 但它们并不是唯一的。我无法在我的代码中发现问题:(你能帮助我吗?谢谢

int getUniqueNumber(int *p, int i)
{
    int x,j,found;
    do
    {
        x=rand()%100000 + 1;
        found=0;
        j=0;
        while(j<=i && found==0)
        {
            if(p[i]==x)
                found=1;
            else
                j++;
        }
    } while(found==1);
    return x;
}

2 个答案:

答案 0 :(得分:4)

p[i] == x应为p[j] == x

答案 1 :(得分:0)

该功能可以通过以下方式定义

int getUniqueNumber( const int *p, int i )
{
    int x, j;

    do
    {
        x = rand() % 100000 + 1;

        j = 0;
        while ( j < i && p[j] != x ) ++j;
    } while( j != i );

    return x;
}

至于你的函数实现,那么循环中有一个错误的条件(j&lt; = i)

    while(j<=i && found==0)

并且使用索引i而不是索引j

        if(p[i]==x)