cocos2dx:获取不重复的随机数

先上源码:

 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));   //放在调用随机函数的循环外
原文地址:https://www.cnblogs.com/arthas/p/2859863.html