如何在C语言和OC中生成随机数?

2025-10-03 18:06:48

1、C语言中: 

 如果只要产生随机数而不需要设定范围的话,使用rand( )就可以了,会自动返回一个随机值,范围在0~RAND_MAX(2147483647)间。RAND_MAX定义在stdlib.h中,要使用时别忘了导入头文件stdlib.h。    

2、如果要生成一个指定范围的数,可以在宏定义中定义一个 random(int number) 函数,然后在 main()函数里面直接调用random()。

如何在C语言和OC中生成随机数?

3、但是上面两种方法生成的随机数都是一次性的,第二次运行的结果会和第一次一样,这与srand()函数有关。srand()用来设置rand()产生随机数时的随机数种子。在调用rand()函数产生随机数前,必须先利用srand()设好随机数种子(seed), 如果未设随机数种子, rand()在调用时会自动设随机数种子为1。上面的两个例子就是因为没有设置随机数种子,每次随机数种子都自动设成相同值1 ,进而导致rand()所产生的随机数值都一样。

如何在C语言和OC中生成随机数?

4、srand()函数定义 : void srand (unsigned int seed); 

     通常可以利用geypid()或time(0)的返回值来当做seed 如果你用time(0)的话,要加入头文件 ;示例如下图

如何在C语言和OC中生成随机数?

5、在OC中:

arc4random() 比较精确不需要生成随即种子

       使用方法 :

                 通过arc4random() 获取0到x-1之间的整数的代码如下:

                 int value = arc4random() % x; 

                 获取1到x之间的整数的代码如下:

                 int value = (arc4random() % x) + 1; 

如何在C语言和OC中生成随机数?

6、Objective-C有个更方便的随机数函数arc4random_uniform(x),可以用来产生0~(x-1)范围内的随机数,不需要再进行取模运算。如果要生成1~x的随机数,可以这么写:arc4random_uniform(x)+1。

7、CCRANDOM_0_1() cocos2d中使用 ,范围是[0,1]

       使用方法:

           float random = CCRANDOM_0_1() * 5;  //[0,5]   CCRANDOM_0_1() 取值范围是[0,1]

8、random() 需要初始化时设置种子

      使用方法:

               srandom((unsigned int)time(time_t *)NULL); //初始化时,设置下种子就好了。

如何在C语言和OC中生成随机数?

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢