【发布时间】:2015-09-07 06:51:39
【问题描述】:
我正在尝试编写一个函数,它接受列表大小和上限(用于随机数)并返回数组中的随机数。 这是我写的。
bool inList(long *heads, int num, int s){
for (int i=0; i<s; i++){
if (heads[i] == num){
return true;
}
}
return false;
}
long* generateRandomList(size_t s, int n){
long heads[s];
for (long i=0; i<s; i++){
heads[i] = -1;
}
srand(time(NULL));
for(int i=0; i<s; i++){
int r;
while (true){
r = ( rand() % n ) + 1;
bool isInList = inList(heads, r, s); // unique numbers
if (isInList == false){
break;
}
}
heads[i] = r;
printf("i %d r %d\n", i, r); // this is ok
}
return heads;
}
int main(){
size_t s = 20;
size_t n = 100;
long *lists;
lists = generateRandomList(s, n);
for (int i=0; i<s;i++){
printf("%d, %d\n",i, lists[i] );
}
}
generateRandomList() 中的第一个 printf 工作正常..
但是,第二个会产生一些垃圾值..
这是示例输出。
// from printf inside generateRandomList function
i 0 r 16
i 1 r 4
i 2 r 11
i 3 r 20
i 4 r 5
i 5 r 14
i 6 r 3
i 7 r 6
i 8 r 17
// from second printf.
0, 16
1, 16
2, -712138747
3, 1
4, 5
5, 14
6, 3
7, 6
8, 17
【问题讨论】:
-
我很惊讶你可以编译这段代码。最后几行代码是否在所有函数之外?
-
@YuHao:已编辑..我刚刚剪掉了代码的相关部分..道歉。