用变量计算次数,判断生成的随机数,符合指定数字就保存,不符合就重新生成,这样就控制一个数出现次数。
下面我的代码,修改常量可实现任意个数任意正整数范围的随机数。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define NT 10//生成随机数的个数
#define MN 1//随机数范围(正整数)
#define MX 100//随机数范围(正整数)
int main()
{
int i,a[NT],num=0,n=-1,rn;
srand(time(NULL));
printf("即将生成%d~%d的%d个随机数,请指定某一个数字出现的次数:\n",MN,MX,NT);
printf("请输入指定的数字(%d~%d):",MN,MX);
while(num<MN || num>MX)
scanf("%d",&num);
printf("请输入数字出现的次数(%d~%d):",0,NT);
while(n<0)
scanf("%d",&n);
rn=rand()%(MX-MN+1)+MN;
for(i=0;i<NT;i++)
{
if(n==0)
{
while(rn==num)
{
rn=rand()%(MX-MN+1)+MN;
a[i]=rn;
continue;
}
rn=rand()%(MX-MN+1)+MN;
}
if(n>0)
{
while(rn!=num)
rn=rand()%(MX-MN+1)+MN;
n--;
a[i]=rn;
continue;
}
a[i]=rn;
}
//-------打印输出--------------------
printf("生成的%d个随机数为:\n",NT);
for(i=0;i<NT;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}