C++ rand()大哥大姐来,这个什么意思?

来源:百度知道 编辑:UC知道 时间:2024/06/03 19:19:51
void CCard::PSetCard(){//给玩者发牌
srand( (unsigned)time( NULL ) *5);//用当前的时间作为随机数产生的种子

Card1 = rand()%MAX+2;//牌点为2-14,14点为A

Card2 = rand()%MAX+2;
}
void CCard::CSetCard(){
srand( (unsigned)time( NULL ) *(unsigned)time( NULL ));//为避免因时间种子相同而造成双方牌一样而给计算机另行定义发牌函数

Card1 = rand()%MAX+2;//牌点为2-14,14点为A

Card2 = rand()%MAX+2;
}
srand() 中一会儿*5 一会儿*(unsigned)time 是什么意思,大哥大姐帮忙!

rand()是产生伪随机数的函数,计算机是死的,不可能产生真正的随机数,所以要用不同的种子,srand( (unsigned)time( NULL ) *5);//用当前的时间作为随机数产生的种子,这个就是产生种子,如果没有这句,那每次产生的“随机数”就是完全一样的,种子不同时,那rand()产生的随机数也就不同了

楼上正解。就是为了保证每次产生的“随机数”不一样,所以才会用*(unsigned)time ,因为当前时间肯定是不一样的。至于*5肯定是程序里需要了,避免和下一个函数用一样的“种子”来产生随机数。

设置随机数的种子, 目的是使每次运行该程序时取到的随机数都不一样。。