C++获取随机数的有关问题

C++获取随机数的问题为了给一个两人一组的比赛分组写了一个Person类,我的思路是这样的:Person类里面有一个

C++获取随机数的问题
为了给一个两人一组的比赛分组写了一个Person类,我的思路是这样的:
Person类里面有一个getRandomNumber函数来获取一个随机数,假设只有10个人,就先预定10个位置来让10个Person的实例去插空,每插一次都要和之前的已经插入的Person比较,如果有相同,则再执行一次这个Person的getRandomNumber函数,否则就可以插入。

C/C++ code
class Person{public:    int getNumber();       int getRandomNumber(); //返回一个随机数     //其它省略private:    char *name;    int number;      };int Person::getRandomNumber(){    srand((unsigned)time(NULL));    number = rand();    return number;}int main(){    Person person[10];    for (int i=0; i<10; ++i)    {        //让每个person都获取一个随机数        person[i].getRandomNumber();    }    for (int j=0; j<10; ++j)    {        cout << person[j].getNumber() << endl;  //但是打印出来后每个成员的number值都是一样的!    }}

在运行的时候,我用一个输出函数测试发现每个成员得到的随机数都是一样的!
可是我加一个断点调试运行的时候,它们得到的数又不一样了~

请教下各位高手,这个问题该如何解决啊?

[解决办法]
int Person::getRandomNumber()
{
number = rand();
return number;
}

int main()
{
Person person[10];
for (int i=0; i<10; ++i)
{
srand((unsigned)time(NULL) + i);
//让每个person都获取一个随机数
person[i].getRandomNumber();
}
for (int j=0; j<10; ++j)
{
cout << person[j].getNumber() << endl; //但是打印出来后每个成员的number值都是一样的!
}
}

你这样试试,你的问题主要是循环很快,每次得到的系统时间相同,所以随机数相同!


[解决办法]
1.用time()函数取得的值在一个循环连续调用,几乎一样,加一个断点调试,就会不同。所以
-----------------------
在运行的时候,我用一个输出函数测试发现每个成员得到的随机数都是一样的! 
可是我加一个断点调试运行的时候,它们得到的数又不一样了~ 
-----------------------
2.srand只需要调一次。
C/C++ code
class Rand{public:    Rand(void);    int GetRand();};Rand::Rand(void){    time_t ts;    struct tm *timetbl;    time(&ts);    timetbl = localtime(&ts);    srand(timetbl->tm_hour * timetbl->tm_min * timetbl->tm_sec);}int Rand::GetRand(){    return rand();}