在数组中分配唯一的随机整数 (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)
我为此苦苦挣扎了这么久,我可以用随机数填充我的数组 但它们不是唯一的。我无法在我的代码中发现问题 :( 你能帮我吗?谢谢
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)