①COCOS2D-X的随机数:
初始化随机数种子
cc_timeval psv;
CCTime::gettimeofdayCocos2d( &psv, NULL ); // 计算时间种子
unsigned int tsrans = psv.tv_sec * 1000 + psv.tv_usec / 1000; // 初始化随机数
srand( tsrans );
用宏产生随机数
int random = CCRANDOM_0_1(); // 产生0~1之间的随机数
*若不设定srand,则每次生成固定序列。
②简单使用方法:
生成 [1,5] 之间的float 数
int random = CCRANDOM_0_1 * 4 + 1
生成10%概率
if(1==rand())
//10%的概率达成
else
//90%的概率没达成
筛选型随机数 如希望取0-99的随机数,但不能是6。
X = CCRANDOM_0_1 * 99;
while(X == 6){
X = CCRANDOM_0_1 * 99;
}
取0-99的随机数,但不要5的倍数
X = CCRANDOM_0_1 * 99;
while((X % 5) == 0){
X = CCRANDOM_0_1 * 99;
}
③lua的随即函数、可在cocos2d_x + lua中直接使用
math.randomseed(os.time()) //相当于srand()的过程 i=math.random(1,6) //生成一个1到6之间的随机数
④高阶:arc4random(未验证)
藏在C语言标准库(Standard C Library)当中.文档对于它的描述是:
The arc4random() function uses the key stream generator employed by the arc4 cipher,
which uses 8*8 8 bit S-Boxes. The S-Boxes can be in about (21700) states.
The arc4random() function returns pseudo-random numbers in the range of 0 to (232)-1,
and therefore has twice the range of rand(3) and random(3).
arc4random既使用了arc4加密算法避免seed重复,并且比random的取值范围(2**31)-1整整大了一倍。在iPhone中,RAND_MAX是0x7fffffff (2147483647),而arc4random()返回的最大值则是 0×100000000 (4294967296),从而有更好的精度。此外,使用arc4random()还不需要生成随机种子,因为第一次调用的时候就会自动生成。
获取0到x-1之间的整数的代码如下:
int value = arc4random() % x;
获取1到x之间的整数的代码如下:
int value = arc4random() % x + 1;
生成0到100之间一个浮点数(精度是rand()的两倍):
#define ARC4RANDOM_MAX 0×100000000
double val = floorf(((double)arc4random() / ARC4RANDOM_MAX) * 100.0f);
⑤参照:
http://blog.youkuaiyun.com/zltianhen/article/details/8827099http://bbs.9ria.com/thread-210441-1-1.html
http://blog.youkuaiyun.com/taobao755624068/article/details/8522892