我正在尝试实现一个函数 int choose_N(void),它生成并返回随机的整数列表 N(最多四个整数)。我不确定我是否以正确的方式使用 rand(),但这是我目前所拥有的:
int choose_N(void)
{
int x, integer[4];
srand ((int) time(NULL));
for (x=0; x<4; x++)
integer[x]=rand();
return integer;
}
像这样循环行吗?时间是否以正确的方式初始化?
最佳答案
两个问题:最重要的是,数组 integer
是本地的,当你返回时它会消失。如果你想在 C 中返回一个数组,你必须让调用者传入它(见下文)。其次,srand()
应该每个程序 只调用一次,所以它不属于像这样的函数——它应该在main
或一些类似的初始化函数,否则对该函数的多次调用将是相关的(最坏的情况下,它们甚至可能是相同的)。所以这里有一个更好的方法:
void choose_n(int *out, int count) {
for (int i = 0; i < count; i += 1) {
out[i] = rand();
}
}
int main(int argc, char *argv[]) {
int results[4];
srand(time(NULL));
choose_n(results, 4);
}
关于c - 在 C 语言中使用 rand( ) 生成随机整数序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22136179/