c - 在 C 语言中使用 rand( ) 生成随机整数序列

标签 c random

我正在尝试实现一个函数 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/

相关文章:

使用C语言破解凯撒密码

c - mprotect() C 中的无效参数

c - 从管道读取错误

postgresql - Postgres FOR 循环

javascript - javascript 中的 Math.random 如何实现随机性?

c - 了解使用 SSE 指令进行矢量化

c - 您是否必须将 `u` 后缀附加到无符号整数?

algorithm - 如何找到噪声二价矩阵的最佳重叠

c# - 在多个类别中使用一个 Random 对象是否会降低每个类别的随机性?

matlab - matlab中randn函数的问题