可能重複:
rand function returns same values when called within a single function c++蘭特()生成相同數量的
爲什麼蘭特()生成相同數量?
die.h
#ifndef DIE_H
#define DIE_H
class Die
{
private:
int number;
public:
Die(){number=0;}
void roll();
int getNumber()const{return number;}
void printValue();
};
#endif
die.cpp
#include"die.h"
#include<iostream>
#include<time.h>
using namespace std;
void Die::roll()
{
srand(static_cast<int>(time(0)));
number=1+rand()%6;
}
void Die::printValue()
{
cout<<number<<endl;
}
的main.cpp
#include"die.h"
#include<iostream>
using namespace std;
int main()
{
Die d;
d.roll();
d.printValue();
d.roll();
d.printValue();
d.roll();
d.printValue();
}
使用'srand'一次。目前它一直播種着相同的序列。 – chris
加上@chris所說的,這裏的關鍵是'srand'正在被連續調用,所以'time'總是返回相同的值。在調用srand之前進行一些睡眠(大約一秒鐘),你會看到行爲改變。 –
你可能想看看這個:http://stackoverflow.com/questions/2254909/boost-random-number-generator – Sarang