随机数及其应用 设计一“真随机数”函数:int MyRandom(int n,int m); 功能:n<m,随机产生 n~m 之间的整数,要求每次调用返回一随机数,均匀分布在 n~m 之间。

该程序使用C语言编写,包括三个功能:1)分析10000次MyRandom(1,100)的随机数分布;2)生成“35选7”的福利彩券摇奖号码;3)创建一个通用的“x选y”摇奖器,交互友好,能根据用户输入生成不重复的随机数。用户通过菜单选择操作,程序利用rand()函数生成随机数。
摘要由CSDN通过智能技术生成

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;

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值