【发布时间】:2017-07-16 12:51:30
【问题描述】:
所以我目前正在学习 C,我对 random() 函数的工作原理有些困惑。
我知道我必须提供一个种子,但我不知道如何实际生成随机数。
srandom(seed);
long int value= random(40);
当我尝试这个时,它给了我一个编译器错误:
too many arguments to function ‘long int random()
最终目标是获得 1 到 40 之间的随机数。
我应该补充一点,目标是不使用rand() 函数。
【问题讨论】:
-
random 不带参数;你传递了值 40。
-
请不要在每次致电
rand()之前放置srand()。在程序开始时调用它一次。我不知道你为什么重命名那些库函数。这些是什么?我们怎么知道他们在做什么?它们是非标准函数还是您自己的函数? -
阅读
random()的 POSIX 规范——它告诉你很多要做什么。其余的,请阅读Is this C implementation of Fisher-Yates shuffle correct?,了解如何生成 0..N 范围内的无偏随机数(对于 1..40,您将使用 0..39 范围内的随机数并加 1)。