问问题
24949 次
2 回答
3
man random
给了我:
#include <stdlib.h>
long int random(void);
所以错误信息是正确的:函数“随机”的参数太多。
我不知道函数randomize
,random
我知道的函数不带任何参数。
但是我确实在网上找到了这个(注意,你不应该使用这个代码,我只是说):
#ifndef __TURBOC__
#define randomize() srand48(getpid())
#define random(x) (lrand48() % x)
#endif
所以也许这是一个涡轮C老东西?我还发现这个示例倾向于确认它是 Turbo C 特定的功能。
如何在C中生成随机数
如果您想继续使用rand
and srand
,您可以执行以下操作:
int random(int N) {
return (double)rand()/RAND_MAX * N;
}
但您也可以寻找其他随机生成器,例如 Mersenne Twister。有很多可用的实现。
于 2013-11-14T11:40:37.930 回答
1
这是不正确的。的签名random
是long int random(void);
。
您通常可以通过除以RAND_MAX/N
而不是使用模数来获得更好的伪随机范围(PRNG 使用的低位比高位更容易预测),但如果您担心这一点,我建议使用电池统计测试,看看你实际上有多少偏差。
于 2013-11-14T11:44:08.113 回答