c语言有不重复随机数函数吗?
比如:单位开奖都要求这个函数,不知道怎么写?刚学,请老师们大量。
2007-08-29 14:25




2007-08-29 14:26
开奖的数值范围肯定很小,例如,在1~1000中,你可以这样
int a[1000]={1,2,......1000}
然后,随机打乱
for(....)//这里循环多少次,你自己看着办
{
int k=rand()%1000;
int k1=rand()%1000;
int tmp =a[k];
a[k]=a[k1];
a[k1]=tem;
}
然后,你想要几个,就有几个了

2007-08-29 14:32

2007-08-29 14:32
2007-08-29 14:34

2007-08-29 14:39
2007-08-29 14:40
2007-08-29 16:23
2007-08-29 19:17
想了很久,还是加了一个goto语句,数字好象不重复了,请老师们纠正!
#include "stdio.h"
#include "time.h"
#include "stdlib.h"
#include "string.h"
#define N 20 //设置奖品个数;
#define M 500 //参加抽奖人数;
int main()
{
int i,s,k=0,a[N];
printf("本次设置奖品数%d个;\n",N);
printf("本次参加抽奖人数%d人;\n",M);
getchar();
srand(time(NULL));
for(k=0;k<N;k++)
ch:
{i=rand()%M;
{for(s=0;s<k;s++)
if(i==a[s]) goto ch;
a[k]=i;}
printf("%d\t",a[k]);}
}
2007-08-30 08:46