请高手指点一下有关C++的问题

void Building::Running(int OrderTime)//在限定的时间内
{
int i,iLater1,iLater2,Spent,int Number[2],key=0;
for(i=1;i<=OrderTime;i+=Spent)
{
iLater1=0,iLater2=0;
Spent=0;
srand( (unsigned)time( NULL ) );
for(int j=1;j<3;j++)
{
Number[j]=0+rand()%50;
}
if(Number[1]%2==0)//偶数表示一楼有人上
{
cout<<"一楼有人上"<<endl;
iLater1=1;
}
if(Number[2]%2==0)//偶数表示二楼有人下
{
cout<<"二楼有人下"<<endl;
iLater2=1;
}
if(iLater1==1&&iLater2==0) key=1;
if(iLater1==1&&iLater2==1) key=2;
if(iLater1==0&&iLater2==1) key=3;
if(iLater1==0&&iLater2==0) key=4;
switch(key)
{
case 1:
{
if(Eleva.GetFloor()==1)
{
Floor1.GetInside();
Floor2.CreatePeople ();
Eleva.ChangeFloor(2);
WorkTime++;//表示电梯载人上一次
Spent=5;
Print(i-1+Spent);
continue;

}
else if(Eleva.GetFloor()==2)
{
Eleva.ChangeFloor(1);
Floor1.GetInside();
Floor2.CreatePeople ();
Eleva.ChangeFloor(2);
WorkTime++;//表示电梯从二楼到一楼,再载人到二楼
Spent=10;
Print(i-1+Spent);
continue;
}
}
case 2:
{
if(Eleva.GetFloor()==1)
{Eleva.ChangeFloor(2);
Eleva.ChangeFloor(1);
WorkTime=WorkTime+2;
Spent=10;
Print(i-1+Spent);
continue;
}
else if(Eleva.GetFloor()==2)
{
Eleva.ChangeFloor(1);
Eleva.ChangeFloor(2);
WorkTime=WorkTime+2;
Spent=10;
Print(i-1+Spent);
continue;
}
}
case 3:
{
if(Eleva.GetFloor()==1)
{
Eleva.ChangeFloor(2);
Floor2.GetInside();
Floor1.CreatePeople ();
Eleva.ChangeFloor(1);
WorkTime=WorkTime+1;
Spent=10;
Print(i-1+Spent);
continue;
}
else if(Eleva.GetFloor()==2)
{
Eleva.ChangeFloor(1);
Floor2.GetInside();
Floor1.CreatePeople ();
WorkTime=WorkTime+1;
Spent=5;
Print(i-1+Spent);
continue;
}
}

case 4:
{
cout<<"没有人上下电梯"<<endl;
continue;
}
}
}
}
程序一共运行10次
为什么每次结果都是一样的?如连续10次都是“一楼有人上”
我是想让程序连续产生若干个随机数,这些随机数之间都没有联系,现在我的问题就是每次产生的随机数都是没有关系的,从而key也不相同,但是输出却都是相同的,如都是“有人上”或“有人下”或“没人上下”,我的目的就是想这三种情况随机出现(我这个程序是简单模拟电梯),希望高手帮一下忙

sand放在main块的第一行,种子只需产生一次就可。不要放到for循环里
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-11-26
你用随机数了?
记得写句好象是randomize();在程序开头
第2个回答  2009-11-28
播撒一个随机种子(放在程序开头 变量定义之后)
咯咯
srand( (unsigned)time(NULL) ); //以当前系统时间来实现随机数种子
然后就可以了
咯咯