如何在C语言和OC中生成随机数?
1)如何在C语言中生成随机数?
2)如何在OC中生成随机数?用什么函数?
操作方法
- 01
C语言中: 如果只要产生随机数而不需要设定范围的话,使用rand( )就可以了,会自动返回一个随机值,范围在0~RAND_MAX(2147483647)间。RAND_MAX定义在stdlib.h中,要使用时别忘了导入头文件stdlib.h。
- 02
如果要生成一个指定范围的数,可以在宏定义中定义一个 random(int number) 函数,然后在 main()函数里面直接调用random()。
- 03
但是上面两种方法生成的随机数都是一次性的,第二次运行的结果会和第一次一样,这与srand()函数有关。srand()用来设置rand()产生随机数时的随机数种子。在调用rand()函数产生随机数前,必须先利用srand()设好随机数种子(seed), 如果未设随机数种子, rand()在调用时会自动设随机数种子为1。上面的两个例子就是因为没有设置随机数种子,每次随机数种子都自动设成相同值1 ,进而导致rand()所产生的随机数值都一样。
- 04
srand()函数定义 : void srand (unsigned int seed); 通常可以利用geypid()或time(0)的返回值来当做seed 如果你用time(0)的话,要加入头文件 ;示例如下图
- 05
在OC中: arc4random() 比较精确不需要生成随即种子 使用方法 : 通过arc4random() 获取0到x-1之间的整数的代码如下: int value = arc4random() % x; 获取1到x之间的整数的代码如下: int value = (arc4random() % x) + 1;
- 06
Objective-C有个更方便的随机数函数arc4random_uniform(x),可以用来产生0~(x-1)范围内的随机数,不需要再进行取模运算。如果要生成1~x的随机数,可以这么写:arc4random_uniform(x)+1。
- 07
CCRANDOM_0_1() cocos2d中使用 ,范围是[0,1] 使用方法: float random = CCRANDOM_0_1() * 5; //[0,5] CCRANDOM_0_1() 取值范围是[0,1]
- 08
random() 需要初始化时设置种子 使用方法: srandom((unsigned int)time(time_t *)NULL); //初始化时,设置下种子就好了。