C++ rand()随机生成整数。循环调用函数生成数据,如其用注释一位置输出,可以获得想要的随机数据。但是如果启用注释2位置输出,数组a[10]中的数据却不改变

C++ rand()随机生成整数。循环调用函数生成数据,如果用注释一位置输出,可以获得想要的随机数据。但是如果启用注释2位置输出,数组a[10]中的数据却不改变
本帖最后由 zx154639702 于 2013-08-22 21:19:34 编辑
C++ rand()随机生成整数。循环调用函数生成数据,如果用注释一位置输出,可以获得想要的随机数据。但是如果启用注释2位置输出,数组a[10]中的数据却不发生变化,和第一次相同。通过调试,发现在循环调用构造函数的时候a[]中数据是改变的,但是调用结束后,a[]立马变成原来的数据,有木有人来解惑。另外,srand(time(0))应该放在哪里啊。
#include<iostream>
#include<cstdlib>
#include<time.h>
using namespace std;
class AAA
{
   int a[10];
public:
AAA()
{  
for(int i=0;i<10;i++) 
      {
 
  a[i]=1000*rand()/(RAND_MAX+1);
         //cout<<a[i]<<'\t';   注释1
}
cout<<endl;
}

void times(){
 //srand(time(0));
  for(int i=0;i<10;i++)
 {
 
 AAA();
      //print();   注释2
  }

}
void print()
{
  for(int i=0;i<10;i++)
  cout<<a[i]<<'\t';
}

};
int main()
{
   AAA a;
   a.times();
   system("pause");
   return 0;
}
C++

------解决方案--------------------
帮你改一下
#include<iostream>
#include<cstdlib>
#include<time.h>
using namespace std;
class AAA
{
   int a[10];
public:
AAA()
{
srand(time(0));
times();
}

void times()
{
for(int i=0;i<10;i++)
{
a[i]=1000*rand()/(RAND_MAX+1); 
}

}
void print()
{
  for(int i=0;i<10;i++)
  cout<<a[i]<<'\t';
}

};
int main()
{
AAA a;
a.print();
a.times();
a.print();

system("pause");
return 0;
}