bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !CCLayer::init() ) { return false; } int num[20]; for (int i=0; i<20; i++) { num[i] = i; } for (int i=0; i<20; i++) { int r = random(i, 19); swap(num[i], num[r]); CCLOG("rand:%d", num[i]); } return true; } int HelloWorld::random(int start, int end){ float i = CCRANDOM_0_1()*(end-start+1)+start; return (int)i; }
第24行的語句的意思是獲取[start, end]范圍的隨機數。
第9--12行初始化一個長度為20的數組,初始化的內容是將要被打亂的目標隨機數。
第14-18行首先獲取一個范圍為[i, 19]的隨機數r,然後將index為i和index為r的數進行交換,然後輸出利用隨機數打亂後的數組。
另外,實際使用時不要忘記設置隨機數種子,不然的話每次獲取的隨機數都是相同的
1 srand(time(NULL)); //放在調用隨機函數的循環外