为什么rand()生成相同的数字?
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
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
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();
}
Run Code Online (Sandbox Code Playgroud)
小智 6
你的调用die.roll()是如此接近,time(0)实际上每次都返回相同的值,因此,你的rand种子对于每次调用都是相同的.roll().
尝试srand(static_cast<int>(time(0)));在.roll()(在Die构造函数中main())调用一次(并且只调用一次).