1、主程序中循环调用 10000 次 MyRandom(1,100),求随机数分布情况。
2、制作一“35 选 7 ” 福利彩券摇奖器,即:每次运行,随机产生 7 个 1~35 的不重复的整数。
3、制作一“x 选 y ”通用福利彩券摇奖器,即:每次运行,随机产生 y 个 1~ x 的不重复的整数。 要求交互良好,使用方便。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <process.h>
#include <string.h>
int inputchoice(){
int mychoice;
system("CLS");
printf("\n");
printf(" 程序设计与实践 \n");
printf("\n");
printf(" ------随机数及其应用------ 22计科C2xxx 2023.06.11\n");
printf("\n");
printf(" 1 - 求随机数分布情况.\n");
printf(" 2 - '35选7'福利彩券摇奖器.\n");
printf(" 3 - 'x选y'通用福利彩券摇奖器.\n");
printf(" 0 - 结 束.\n");
printf(" 请输入你的选择:");
scanf("%d",&mychoice);
return mychoice;
}
int MyRandom()
{
int m;
m=rand()%100+1;
return m;
}
int random(int a,int b)
{
int m;
m=rand()%(b-a+1)+a;
return m;
}
int sjs1_100()
{
int a[101]={0};
int n;
printf("\n");
printf("求随机数分布情况\n");
for(int i=1;i<=10000;i++){
n=MyRandom();
a[n]++;
}
for(n=1;n<=100;n+=1){
printf("%3d:--%3d ",n,a[n]);
if((n%4)==0)
printf("\n");
}
return 0;
}
int sjs1_35()
{
int b[36]={0};
printf("\n");
printf("‘35选7’福利彩券摇奖器产生的结果:\n");
int k;
for(int i=0;i<7;i++){
k=random(1,35);
if(b[k]==0){
printf("%5d\n",k);
b[k]=1;
}
else i--;
}
return 0;
}
int sjsx_y()
{
int x,y;
printf("\n");
printf("‘x选y’通用彩券摇奖器,请输入x和y:");
scanf("%d%d",&x,&y);
int b[x+1]={0};
printf("‘%d选%d’福利彩券摇奖器产生的结果:\n",x,y);
int k;
for(int i=0;i<y;i++){
k=random(1,x);
if(b[k]==0){
printf("%5d\n",k);
b[k]=1;
}
else i--;
}
return 0;
}
int main(void)
{
int choice;
srand((unsigned)time(NULL));
while((choice=inputchoice())!=0)
{
switch(choice)
{
case 1:
sjs1_100();system("pause");break;
case 2:
sjs1_35();system("pause");break;
case 3:
sjsx_y();system("pause");break;
default:
printf("Input Error.");system("pause");break;
}
}
return 0;
}