用一个数组装随机数,一个数组表示已经记录过的随机数;
比如说随机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
#include
#include
voidmain()
{
inta[20];
inti,j;
srand((int)time(0));
a[0]=rand()%20+1;
for(i=1;i<20;i++)
{
a[i]=rand()%20+1;
for(j=0;j
{
if(a[i]==a[j])
{
i--;
}
}
}
for(i=0;i<20;i++)
{
printf("%3dn",a[i]);
}
}
将已经产生的随机数保存下来,然后在获取到新的随机数时,与之前保存下来的值进行对比,如果已经出现过则抛弃,并再次获取,直到获取到不同的随机值为止。
以获取10个0~100之间的不重复随机数为例,代码如下:
#include
#include
#include
int main()
{
int list[10], i,j, a;
srand(time(NULL));//设置随机数种子。
for(i = 0; i < 10; i ++)
{
while(1)
{
a = rand()%100; //获取一个0~100之间的随机数。
for(j = 0; j < i; j ++)
if(list[j] == a) break;//检查重复。
if(j == i)//没有重复值,保存到list中。
{
list[i] = a;
break;
}
}
}
for(i = 0; i < 10; i ++)//打印获取到的随机数序列。
printf("%d,",list[i]);
printf("\n");
return 0;
}
主要是C默认是生成假随机数;
可加一个宏定义,randomize可让以后使用的随机数都是真随机数
代码如下:
#include
#include
#include
#define randomize() srand((unsigned)time(NULL))
main()
{
int a[52]={302,303,304,305,306,307,308,309,310,311,312,313,314
,402,403,404,405,406,407,408,409,410,411,412,413,414
,502,503,504,505,506,507,508,509,510,511,512,513,514
,602,603,604,605,606,607,608,609,610,611,612,613,614};
int i[52]={0},j,k,p;
randomize();
do
{
do
{
p=0;
j=a[(int)(rand()/(RAND_MAX+1.)*52)];
for(k=0;i[k]!=0;k++)
{
if(i[k]==j)
{
p=1;
break;
}
}
}while(p==1);
i[k]=j;
printf("%d\n",j);
getchar();
}while(k<=52);
}
#include
#include
#include
#define N 6
int main()
{
int a[52]={302,303,304,305,306,307,308,309,310,311,312,313,314
,402,403,404,405,406,407,408,409,410,411,412,413,414
,502,503,504,505,506,507,508,509,510,511,512,513,514
,602,603,604,605,606,607,608,609,610,611,612,613,614};
int rndnum[N];
int n;
int i,j;
srand((unsigned)time(0));
for(i=0;i
while(1)
{
n=a[rand()%52];
for(j=0;j<=i;j++)
{
if(n==rndnum[j])
break;
}
if(j>i)
{
rndnum[i]=n;
break;
}
}
}
for(i=0;i
printf("%d ",rndnum[i]);
}
return 0;
}
核心代码,甲即为你需要的随机数:
整数 甲;
步进循环( 整数 i=0; i<6; i++ ){
初始化随机数( 当前时间());
甲 = a[ 取随机数()%52 ];
}
编译器使用: 习语言编译器