您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x 实现不重复的随机数

2013-09-24 19:50 218 查看
想了几分钟的算法,可能有点简单,不过好用,记录下来,留给以后用。

vector<int> MemoryChallenge::createRand( int count , int sum )
{
//保存随机数
vector<int> vec_ran;

srand(time(NULL));
//不知道为什么,第一次都是随机出2,所以我就先赋值
int ranNum = CCRANDOM_0_1()*sum;

int i = 0;
//标记
bool flag = false;
do
{
//随机数
int ranNum = CCRANDOM_0_1()*sum;

//随机数的等于最大数,继续
if (ranNum == count)
{
continue;
}

//判断和容器中的数据是否相等
for (int j=0;j<vec_ran.size();j++)
{
if (vec_ran[j] != ranNum )
{
continue;
}
flag = true;
}

//如果不相等,则保存到容器中
if(!flag)
{
vec_ran.push_back(ranNum);

i++;
}

//恢复标识
flag = false;
} while ( i<count );

return vec_ran;
}


用法就是很简单了

//生成随机数
vector<int> vec_ran = createRand(4,6);

for (int i=0;i<vec_ran.size();i++)
{
CCLOG("vec: %d",vec_ran[i]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: