代码改变世界

[Cocos2d-x]随机数

2013-12-13 11:38  hellenism  阅读(359)  评论(0编辑  收藏  举报

Cocos2d-x为我们提供了生成随机数的宏:CCRANDOM_0_1()

具体定义如下:

/** @def CCRANDOM_0_1
 returns a random float between 0 and 1
 */
#define CCRANDOM_0_1() ((float)rand()/RAND_MAX)

但是发现它并不能满足我们的需求,一般情况下,我们都会需要其他范围的随机数,还是用最通用得方法比较适合

rand() % MAX

 

Ex:

获取0~100之间的整数:

int random = rand() % 100;

 

问题在于,每次启动程序,第一次获取到得数都是一样的。

需要设置生成随机数的种子:

srand((unsigned)time(NULL));//使用当前时间作为随机数生成时的种子

在运行程序,每次获取的值都不一样了。妥

 

在schedule中获取随机数:

问题简述:

如果不设置种子,每次重新启动游戏,每一次loop时获取到得随机数跟上次启动游戏都是一样的。

所以,如果需要在schedule中获取随机数,也需要设置种子。

 

个人认为:

如果程序中需要用到随机数,那么就在程序启动时候统一设置种子,这样在之后就可直接调用rand()获取随机数了

 

bool AppDelegate::applicationDidFinishLaunching()
{
     ....default code....
    
     //add  by Stephen Lee
     srand((unsigned)time(NULL));
}