当前位置: 首页 > 知识库问答 >
问题:

用rand()生成C中的整数随机序列

隗昀
2023-03-14

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

这样循环会有用吗?时间是否以正确的方式初始化?

共有1个答案

翁和颂
2023-03-14

两个问题:最重要的是,数组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语言随机数生成教程(rand和srand用法),包括了C语言随机数生成教程(rand和srand用法)的使用技巧和注意事项,需要的朋友参考一下 在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌。 在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数,它的用法为: void 表示不需要传递参数。

  • 本文向大家介绍C++生成不重复的随机整数,包括了C++生成不重复的随机整数的使用技巧和注意事项,需要的朋友参考一下 C++生成不重复的随机数,供大家参考,具体内容如下 给定正整数的范围[n,m],生成k个不重复的随机数字。 IDE是vs013。 运行结果: 这个程序可以用于班级内部按照学号进行随机抽签。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 我希望能够在Clojure中使用生成可重复的数字。(具体地说,我希望对或incanter的的调用结果是可重复的,这些调用会调用,而后者又会调用)。 我从这个问题中琢磨出,如果我使用Clojure.data.generators,我可以重置随机状态: 但是,该方法似乎只影响Clojure.data.generators中的函数,这并不奇怪: 如何恢复随机状态,以便从中获得可重复的结果?到目前为止,我

  • stackoverflow社区, 给定数字的数字可以交换。在一个序列中,同一个数字只能使用一次(例如20和02、15和51,它们只能在一个序列中使用一次)好吧,我尝试了几个代码组合,但没有一个成功。。。

  • 本文向大家介绍C#生成给定范围内的随机整数,包括了C#生成给定范围内的随机整数的使用技巧和注意事项,需要的朋友参考一下 示例 生成一个介于minValue和之间的随机数maxValue - 1。            

  • 我正在创建一个C-prog,它需要一个由17个整数组成的数组,所有整数都小于18并且是唯一的。这是我现在能做的: 我现在的算法是,每次rand()生成一个数字时,都会在数组中检查这个数字是否已经存在,如果已经存在,则rand()会继续生成一个数字,直到得到一个唯一的数字,然后将其存储在数组中,如果数组中不存在这样的数字,则直接输入到数组中。