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

Assign unique random integers in an array (C)

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

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;
}

p[i] == x 应该是 p[j] == x.

函数可以这样定义

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 <= i )

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

并且错误地使用了索引 i 而不是索引 j

        if(p[i]==x)