想了几分钟的算法,可能有点简单,不过好用,记录下来,留给以后用。
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]);
}