我正在使用Visual Studio 2010并在C中编程.我试图通过rand()方法生成随机整数值.这是代码:
/*main.cpp*/
int main (void)
{
InitBuilding();
return 0;
}
/*building.cpp*/
//includes
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//data structure
typedef struct
{
int type; //building type
} BUILDING;
//global variables
BUILDING g_aBld[200];
//initialization
void InitBuilding(void)
{
srand((unsigned)time(NULL));
for(int cntBld = 0; cntBld < 200; cntBld++)
{
g_aBld[cntBld].type = (rand() % 3);
}
}
在调试之后,我意识到循环的每次迭代都会连续生成0.我之前在其他程序中使用过这个确切的代码,并且工作正常.我不知道为什么现在不行.
提前感谢您的回复.
最佳答案
g_aBld[cntBld].type = (rand() % 3);
不要使用mod来减少rand的范围,因为这可以与随机数生成器初始化自身的方式非常互操作.试试,例如:
g_aBld[cntBld].type = rand() / (RAND_MAX / 3);