rand()一直返回0

时间:2015-10-05 08:13:18

标签: c random

我正在使用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。我之前在其他程序中使用过这个确切的代码,并且运行正常。我不知道它为什么现在不能工作。 提前感谢您的回复。

2 个答案:

答案 0 :(得分:1)

EditBookView

不要使用mod来缩小 g_aBld[cntBld].type = (rand() % 3); 的范围,因为这可以与随机数生成器初始化自身的方式进行严格的互操作。试试,例如:

rand

答案 1 :(得分:1)

通过添加

编译的项目
int main( int argc, char ** argv )
{
    InitBuilding();
}

通过添加,代码可以生成类型0,1,2