先取任意五位随机数,再判断条件,若不符合,再取,直至符合为止。这样会不会运算次数少一点。。。
#include <stdlib.h>
#include <time.h>
int main()
{
void xp(int *a);
int i,a[10]={0,1,2,3,4,5,6,7,8,9};
int k,fl=1;
while(fl)
{
for(i=0;i<10;i++)//10次洗牌,应该够乱了。
xp(a);
if(a[0]!=0)//保证第一个数不是0;
fl=0;
}
k=a[0]*10000+a[1]*1000+a[2]*100+a[3]*10+a[4];//随便用那几数来组成后4位数,缺点要保证第一个数是a[0]。
printf("%d",k);
return 0;
}
void xp(int *a)
{
int i,r,tem;
for(i=0;i<10;i++)
{
r=rand()%10;
tem=a[i];
a[i]=a[r];
a[r]=tem;
}
}
产生的随机数应该是你想要的。
[此贴子已经被作者于2016-6-13 22:50编辑过]