比如说随机0-8,生成一个随机8位数组且数组内各项不重复;
例:
intarray[8]
intarrayIndex[8]={0,0,0,0,0,0,0,0}
intk=0
srand(100)
while(k<8){
intq=rand()%8+1
if(arrayIndex[q-1]==1){
continue
}
array[k]=q
arrayIndex[q-1]=1
k++
}
扩展资料
C语言随机输出1~20不重复的随机数
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
voidmain()
{
inta[20]
inti,j
srand((int)time(0))
a[0]=rand()%20+1
for(i=1i<20i++)
{
a[i]=rand()%20+1
for(j=0j<ij++)
{
if(a[i]==a[j])
{
i--
}
}
}
for(i=0i<20i++)
{
printf("%3dn",a[i])
}
}
#include<iostream>#include<time.h>
#include<stdlib.h>
using namespace std
int main()
{
int i,j
int n[10] //要产生10个随机数
int n1=100//100个随机数
int n2=51 //从50开始
// n[0]=rand()%n1+n2//产生50-150的随机数
srand((unsigned)time(NULL))
for(i=0i<10i++)
{
n[i]=rand()%n1+n2
while(1) //判断是否重复
{
for(j=0j<ij++)
{
if(n[i]==n[j])
{
n[i]=rand()%n1+n2
j=0
break
}
}
if(j==i)//新随机数与前面几个随机数都不重复
break
}
printf("%d\n",n[i])//产生从50-150的随机数
}
return 0
}
//你发的程序少太多东西也不清楚你要表达什么意思,唯一理解的是你提出的要求,我编了一个程序可以产生不重复随机数但是不知道有没有系统函数可以这样做,把n1改成10很明显可以看见程序是符合要求的
#include<iostream.h>#include<cstdlib>
#include<ctime>
void main()
{
int i,j,a[10]
srand(time(0))
for(i=0i<10i++)
{
a[i]=rand()%10
int flag=1
while(flag==1)// 你的这里可能还会产生重复的数,这里确保产生的数不再重复,只要有重复的就在随机新的数。
{
for(j=0j<ij++)
if(a[i]==a[j])
break
if(j<i)
a[i]=rand()%10
if(j==i)
flag=0
}
}
for(i=0i<10i++)
cout<<a[i]<<endl
}
这样就可以了,参考下哈,满意请采纳。