请注意 - 我没有写这段代码,我只是想保持/改进它。
我的一个头文件包含以下行:
/* macros to seed the random number generator */
/* This is needed on Windows which throws an error due to 'random'
not being defined on MingW. I'll clean it up later. */
#define srandom srand
#define random rand
/* New random seed function. */
#define srand srandom
#define rand random
#define rnd(x) ((int)(rand() % (x)) + 1)
#define rund(x) ((int)(rand() % (x)))
此外,我有所有四个函数rand
,srand
,random
,srandom
的手册页,所以我认为这些都是有效的C函数。
你能帮我理解/弄清楚当我打电话给rnd(10)
时会发生什么吗?这是未定义的行为吗?一个定义是否以某种方式“覆盖”了另一个?
(我问,因为我觉得我的实际程序中有很多低数字,即使我的测试程序似乎正常工作并随机分发。)
只是一个快速的说明,我几乎肯定我看到的“很多低数字”可能是运算符优先级和括号中的错误,导致长布尔总是评估为“true”。