今天无意间看程序看到这么个东西: srand((int)time(0)),然后由于不太懂,就大概查资料,写代码试试了下,先总结如下:
先说说这个的意思 : srand((int)time(0))
srand(seed)用来将随机序列的起始点设为seed srand((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(@"srand(0): (%d,%d,%d,%d)",rand(),rand(),rand(),rand());
// srand(1);
NSLog(@"srand(1): (%d,%d,%d,%d)",rand(),rand(),rand(),rand());
// srand(2);
NSLog(@"srand(2): (%d,%d,%d,%d)",rand(),rand(),rand(),rand());
看输出:
2013-09-14 11:15:16.977 SRARand[1365:c07] srand(0): (2129544341,1289278285,790137765,1954026954)
2013-09-14 11:15:16.978 SRARand[1365:c07] srand(1): (2011085954,1076508745,332751240,502673892)
2013-09-14 11:15:16.979 SRARand[1365:c07] srand(2): (239435546,1956350791,265625120,1890373374)
大概就这么个意思,还有其他见解的请留言讨论交流,其实现在正在苦逼的加班中。