怎样生成不重复的随机数?

来源:百度知道 编辑:UC知道 时间:2024/06/07 20:35:45
我是C语言的初学者,以下是猜数字游戏的代码,但是这样可能会生成重复的随机数,请问应该怎么修改呢?望各位同僚指教。
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
#include <stdlib.h>
#include <time.h>
void main( void )
{
int i,k;
int a[4];
int N=0,M=0;
srand( (unsigned)time( NULL ) );

for( i = 0; i <=3;i++ )
{
a[i]=rand()%10;
printf( " %d\n",a[i]);
}
printf("qingshuru:\n");
int b[4];
for(k=0;k<=3;k++)
{
scanf("%d",&b[k]);
}
for(i=0;i<=3;i++)
{
for(k=0;k<=3;k++)
if(a[i]==b[k])
{
if(i==k)
N++;
//break;
if(i!=k)
M++;
//break;
}
}
printf("%d\n%d\n",N,M);
}

#include "stdafx.h"
#include "stdio.h"
#include "math.h"
#include <stdlib.h>
#include <time.h>
void main( void )
{
int i,k,s;
int a[4];
int N=0,M=0;
srand( (unsigned)time( NULL ) );

for( i = 0; i <=3;i++ )
{
//下面是我改的//

a:a[i]=rand()%10;

for(s=0;s<i;s++)
{
if(a[s]==a[i])
goto a;
}

//END//
printf( " %d\n",a[i]);
}
printf("qingshuru:\n");
int b[4];
for(k=0;k<=3;k++)
{
scanf("%d",&b[k]);
}
for(i=0;i<=3;i++)
{
for(k=0;k<=3;k++)
if(a[i]==b[k])
{
if(i==k)
N++;
//break;
if(i!=k)
M++;
//break;
}
}
printf("%d\n%d\n",N,M);
}
不好意思啊
用了强制转换
投机去巧了