【问题标题】:Assign unique random integers in an array (C)在数组中分配唯一的随机整数 (C)
【发布时间】:2015-03-28 16:39:45
【问题描述】:

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

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

【问题讨论】:

标签: c arrays random unique


【解决方案1】:

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

【讨论】:

  • 哦主啊.. 我不敢相信我一直都看不到那个错误。非常感谢!
【解决方案2】:

函数可以通过以下方式定义

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

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

并且不正确地使用索引 i 而不是索引 j

        if(p[i]==x)

【讨论】:

    猜你喜欢
    • 2010-12-09
    • 2016-07-03
    • 2021-12-04
    • 1970-01-01
    • 2015-01-16
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    相关资源
    最近更新 更多