重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
好理解一点的:你可以用srand获得一个100以内的随机数 这个数如果小于60 则意味着“60%中奖的事件中奖了”如果大于60 则“60%中将的事件没中奖” 当然这种思路并不“严格随机”也不“严格按照60%中奖概率发生” 如果需要复杂且比较尊循实际抽奖事件的 可以追问
创新新互联,凭借十载的成都网站建设、成都网站制作经验,本着真心·诚心服务的企业理念服务于成都中小企业设计网站有上千多家案例。做网站建设,选创新互联。
从思想上来所,随机变量x有两个值,0表示不中奖,1表示中奖。如果进行N次实现,如果出现1的次数 / N = p%的话,我们说,x为1的概率为p%
STDLIB 中 rand() 函数的返回值,我们可以认为是服从平均分布的随机变量的值。通过不等式的变换,我们可以得到任意范围内,平均分布的随机变量。
比如说,20%的中奖率,我可以定义, 取[0, 99]的随机整数,如果该值为[0, 20) 则中奖,否则不中,那么中奖率就为 20%
比较晚了,所以简单先看看你的问题,先回答简单的吧。
int fun(int a)
{
int b;
scanf("%d",a);
b=a;
return b;/*把输入的a 赋值到变量b*/
}
这个函数如果执行
int x;
x=fun(11);
那么就相当于x=11
因为这个函数就是把()里面的数字传递给fun()函数
明儿再帮您慢慢看全部啊~~good night
兄弟 我帮你修改好全部程序了,我的程序如下,你先自己跑跑看看现象就明白了。
#include stdlib.h
#include stdio.h
#include time.h
#include math.h
#includeconio.h
struct gift
{
int fromnum;
int tonum;
char level[10];
char gift1[10];
};
struct gift gif[3]=,,};/* 这个结构体用输出类似表格的模式
把奖励的情况表示清楚*/
int fun(int a);
int main()
{
int b,c,d,e=0,o=0,a; int ccii;
time_t t;
struct gift *p ;/*定义指针*p方便输出结构体*/
printf("fromnum tonum level gift\n");
for(p=gif;pgif+3;p++)
{
printf("%d %d %-10s %-10s\n",p-fromnum,p-tonum,p-level,p-gift1 );
}/*结构体的输出*/
srand((unsigned) time(t));
printf("\n\n\n");
printf("-----------------------------------------------\n");
printf("------| 欢迎参加老虎机游戏 |-----------\n");
printf("------| 规则: |-----------\n");
printf("------| 三个数字相同则中奖 |-----------\n");
printf("------| 同为0加4个筹码 |-----------\n");
printf("------| 同为1或2加3个筹码 |-----------\n");
printf("------| 同为3或4或5加2个筹码 |-----------\n");
printf("------| 同为6或7或8或9加1个筹码 |-----------\n");
printf("------| 停止后根据以上规则 |-----------\n");
printf("------| 可以换取相应的奖品 |-----------\n");
printf("-----------------------------------------------\n");
printf("请按任意键开始: 回车键停止:\n\n");
getch();/*需要一个无输出输入直接用 getch */
do
{
do
{
printf("b=%d\t", rand() % 10);
printf("c=%d\t", rand() % 10);
printf("d=%d\r", rand() % 10);/*\r表示重头输入*/
_sleep(100); /*\作用:延时,程序暂停若干时间。 时间,就是他的参数,单位是毫秒。*/
}
while(!_kbhit());/*kbhit检查当前按下的键 */
//printf("stopping here");
//printf("%d",_kbhit());
printf("b=%d", b=rand() % 10);
printf("\tc=%d", c=rand() % 10);
printf("\td=%d\n", d=rand() % 10);/*重新输出随机变量*/
// scanf("%d",ccii);
//exit(0);
// b=1;
// c=1;
// d=1;
if((b==c)||(b==d))
{
if(b==0)
e=e+4;
else if(b==1||b==2)
e=e+3;
else if(b==3||b==4||b==5)
e=e+2;
else if(b==6||b==7||b==8||b==9)
e=e+1;
else ;
printf("恭喜你中奖了\n\n");
printf("您的筹码总值为%d\n\n",e);
}
else
{ printf("很遗憾,没有得奖,请继续加油,下次一定会中奖\n\n");
printf("您的筹码总值为%d\n\n",e);
}
/*关于中奖的判断,以及中奖的等级的判断 */
printf("请按除0外任意数字键继续,按回车键停止。输入数字0离开游戏。\n");
}
while(o=fun(a));/*需要输入但是无法直接使用,用fun函数把输入用变量b的形式输出来*/
printf("您的筹码总值为%d\n",e);/*根据上面结构体中输出的表格可以知道兑换的产品*/
if(e20)
printf("您得到了一个杯子\n");
else if (e50)
printf("您得到了一个泰迪熊\n");
else
printf("您得到了一个mp4\n");
return 0;
}
int fun(int a)
{
int b;
scanf("%d",a);
b=a;
return b;/*把输入的a 赋值到变量b*/
}
关于程序中中奖的判断条件我帮你修改了一下,现在是if((b==c)||(b==d))
也就是三个数字任意两个相同我认为就是获奖了。为什么要这么修改?那是因为你的程序要求实在十分苛刻,我自己跑了十分钟都跑不出来三个数相同的!这就是为什么老虎机是骗钱的原理了!
程序的部分语句我也做了修改,具体见上述coding
祝你跑程序愉快。
你的很多 else if 语句用的不是很好 因为else if的用法你可能没有掌握好,这些语句我都帮你修改了一下,coding中少数注释语句是我调程序时候用过的,并没有删掉,但是不影响你的运行。相反可以作为参考。