随机产生六个不重复的数字

如何在1到22这22个数字中随机产生六个不重复的数字,并把它们存放到一个数组int a[6]中

c++

3个回答

int a[6]]
int nowNum = 0;
bool bFlag = false;
memeset(a,0,sizeof(a));
while(1)
{
    int n = rand()%21+1;
    bFlag = false;
    for(int i =0; i<nowNum; i++)
    {
        if(n == a[i])
        {
            bFlag = true;
            break;
        }
    }

    if(!bFlag)
    {
        a[nowNum++] = n;
    }
} 
huibin2010
huibin2010 while(numNum < 6)
4 年多之前 回复
huibin2010
huibin2010 while语句要作退出检查
4 年多之前 回复
huibin2010
huibin2010 好像会死循环
4 年多之前 回复
huibin2010
huibin2010 好像会
4 年多之前 回复
weixin_34250340
weixin_34250340
4 年多之前 回复

#include
#include
#include
#define MAX 21
using namespace std;
int main()
{
int arr[6];
int i=0;
bool ret=false;
srand((unsigned)time(NULL));
while(1)
{
arr[i]=rand()%MAX+1;
for(j=0;j<i;j++)
{
if(arr[j]==arr[i])
{
ret=true;
}
}
if(!ret)
{
i++;
ret=false;
}
if(i==10)
{
break;
}
}
while(--i)
{
cout<<arr[i]<<" ";
}
}

修改lx624909677同学的:

const int COUNT=6;
int a[COUNT];
int nowNum = 0;

memeset(a,0,sizeof(a));
srand(time(NULL));

while(**nowNum < COUNT**)
{
int n = rand()%21+1;
bool bFlag = false;

    for(int i =0; i<nowNum; i++)
{
    if(n == a[i])
    {
        bFlag = true;
        break;
    }
}

if(!bFlag)
{
    a[nowNum++] = n;
}

}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问