您的位置:首页 > 其它

随机数

2016-06-29 19:34 225 查看
 

    /*

     随机数学习

     

     srand, rand(),random(),

     arc4random()

     

     srand函数是随机数发生器的初始化函数,原型 void srand(unsigned int seed)

     

     srand和rand()配合使用产生的伪随机数序列。rand函数在产生随机数前,需要系统提供生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数,如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。

     

     srand(unsigned seed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同,从而实现真正意义上的“随机”。通常可以利用系统时间来改变系统的种子值,即srand(time(NULL)),可以为rand函数提供不同的种子值,进而产生不同的随机数序列

     

     */

    

    

   
// rand() random() 的初始化函数,如果不加,每次的随机数都和第一次一样

    srand((unsigned)time(0));
  //c++ 写法;
或者
用c语言的写法 srand((unsigned)time(NULL));

    

    

    //1.rand()

    for (NSInteger i =
0; i < 10; i++) {

        

        

        NSInteger num = (long)rand()%10;

        NSLog(@"随机数==1=====%ld",(long)num);

        

        

    }

    

    

    //2.random()

    for (NSInteger i =
0; i < 10; i++) {

        

        

        NSInteger num = (long)random()%10;

        NSLog(@"随机数==2=====%ld",(long)num);

        

        

    }

    

    /*

     rand()和random()实际并不是一个真正的伪随机数发生器,在使用之前需要先初始化随机种子,否则每次生成的随机数一样。

     即rand()和random()在使用前必须用srand()随机化种子,这样才能每次随机的数都不一样

     */

    

    //3.arc4random

    for (NSInteger i =
0; i < 10; i++) {

        

        

        NSInteger num = (long)arc4random()%10;

        NSLog(@"随机数==3=====%ld",(long)num);

        

        

    }

   
/*arc4random() 是一个真正的伪随机算法,不需要生成随机种子,因为第一次调用的时候就会自动生成。而且范围是rand()的两倍。

     在iPhone中,RAND_MAX是0x7fffffff
(2147483647),而arc4random()返回的最大值则是 0x100000000 (4294967296)。

     精确度比较:arc4random()  >  random()  >  rand()。

     */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: