此篇文章主要将讲随机数产生的方法,以及各种方法的优劣
//第一种
//随机效果一般,每次进入游戏的时候,值都是一样的
for (int i = 0; i < 5; i++)
{
m_randData = CCRANDOM_0_1() * 200;
log("1st------------->%f", m_randData);
}
//第二种
//随机效果不好,虽然每次进入游戏,值都不一样,但是生成的随机数是递增的,而且相邻两个数之间的变化不大
srand(unsigned(time(NULL)));
for (int i = 0; i < 5; i++)
{
m_randData = rand() % 200;
log("2rd------------->%f", m_randData);
}
//第三种
//随机效果较好,每次进入游戏的值都不一样,生成的随机数无规律,相邻的两个数变化较大
timeval tv;
cocos2d::gettimeofday(&tv, NULL);
unsigned long int seed = tv.tv_sec * 1000 + tv.tv_usec / 1000;
srand(seed);
for (int i = 0; i < 5; i++)
{
m_randData = rand() % 200;
log("3nd------------->%f", m_randData);
}
//第四种
//C++11的特性,要包含头文件<random>,随机效果不错。
std::uniform_real_distribution<double> u(0, 200);
std::default_random_engine e(rand());
for (int i = 0; i < 5; i++)
{
log("4th------------->%f", u(e));
}