3
4

2 回答 2

3

man random给了我:

   #include <stdlib.h>

   long int random(void);

所以错误信息是正确的:函数“随机”的参数太多。

我不知道函数randomizerandom我知道的函数不带任何参数。

但是我确实在网上找到了这个(注意,你不应该使用这个代码,我只是说):

#ifndef __TURBOC__
#define randomize() srand48(getpid())
#define random(x) (lrand48() % x)
#endif

所以也许这是一个涡轮C老东西?我还发现这个示例倾向于确认它是 Turbo C 特定的功能。

 如何在C中生成随机数

如果您想继续使用randand srand,您可以执行以下操作:

int random(int N) {
    return (double)rand()/RAND_MAX * N;
}

但您也可以寻找其他随机生成器,例如 Mersenne Twister。有很多可用的实现。

于 2013-11-14T11:40:37.930 回答
1

这是不正确的。的签名randomlong int random(void);

您通常可以通过除以RAND_MAX/N而不是使用模数来获得更好的伪随机范围(PRNG 使用的低位比高位更容易预测),但如果您担心这一点,我建议使用电池统计测试,看看你实际上有多少偏差。

于 2013-11-14T11:44:08.113 回答