IOS学习笔记54--关于 srand() 和rand()

来源:互联网 发布:中山广电网络客服电话 编辑:程序博客网 时间:2024/05/21 21:49

   

   今天无意间看程序看到这么个东西:  srand((int)time(0)),然后由于不太懂,就大概查资料,写代码试试了下,先总结如下:

先说说这个的意思 : srand((int)time(0))

srand(seed)用来将随机序列的起始点设为seedsrand((int)time(0))表示以当前时间对应的int值为随机序列起点,这样每次运行程序,由于起点不同才可以得到不同的随机数time函数给出从1970年1月1日00:00:00至今的秒数,它必须带一个参数,用来存储这个秒数,time()会导致语法错误,time(0)表示秒数不进行存储
PS:
这里说点额外话题: 1970.1.1 00:00:00点其实就是 ---->
程序开发者是在197x年写的初稿,用于unix 的 C语言,所以设了这个零点。计算机和PC流行普及也是七十年代以后的事。
所以呢,不要很纠结为什么以这个时间点开始算。

/        int i,j;

//        

//        srand((int)time(0));

//        

//        for(i = 0; i < 10; i++)

//            

//        {

//            

//            j = 1+(int)(10.0*rand()/(RAND_MAX+1.0));

//            

//            printf(" %d ",j);

//            

//        }

    

    srand((int)time(0)); //其实就是保证rand产生的随机数保证永远不相同

    

//        srand(0);

    NSLog(@"srand0: (%d,%d,%d,%d)",rand(),rand(),rand(),rand());

    

//    srand(1);

    NSLog(@"srand1: (%d,%d,%d,%d)",rand(),rand(),rand(),rand());

    

//    srand(2);

    NSLog(@"srand2: (%d,%d,%d,%d)",rand(),rand(),rand(),rand());

看输出:

2013-09-14 11:15:16.977 SRARand[1365:c07] srand0: (2129544341,1289278285,790137765,1954026954)

2013-09-14 11:15:16.978 SRARand[1365:c07] srand1: (2011085954,1076508745,332751240,502673892)

2013-09-14 11:15:16.979 SRARand[1365:c07] srand2: (239435546,1956350791,265625120,1890373374)

大概就这么个意思,还有其他见解的请留言讨论交流,其实现在正在苦逼的加班中。

原创粉丝点击