先上源码:
1 bool HelloWorld::init() 2 { 3 ////////////////////////////// 4 // 1. super init first 5 if ( !CCLayer::init() ) 6 { 7 return false; 8 } 9 int num[20]; 10 for (int i=0; i<20; i++) { 11 num[i] = i; 12 } 13 14 for (int i=0; i<20; i++) { 15 int r = random(i, 19); 16 swap(num[i], num[r]); 17 CCLOG("rand:%d", num[i]); 18 } 19 20 return true; 21 } 22 23 int HelloWorld::random(int start, int end){ 24 float i = CCRANDOM_0_1()*(end-start+1)+start; 25 return (int)i; 26 }
第24行的语句的意思是获取[start, end]范围的随机数。
第9--12行初始化一个长度为20的数组,初始化的内容是将要被打乱的目标随机数。
第14-18行首先获取一个范围为[i, 19]的随机数r,然后将index为i和index为r的数进行交换,然后输出利用随机数打乱后的数组。
另外,实际使用时不要忘记设置随机数种子,不然的话每次获取的随机数都是相同的
1 srand(time(NULL)); //放在调用随机函数的循环外