这道题目纠结我好久。请求帮助。。
【编程题】(满分23分)
俗话说:十赌九输。因为大多数赌局的背后都藏有阴谋。不过也不尽然,有些赌局背后藏有的是:“阳谋”。
有一种赌局是这样的:桌子上放六个匣子,编号是1至6。多位参与者(以下称玩家)可以把任意数量的钱押在某个编号的匣子上。所有玩家都下注后,庄家同时掷出3个骰子(骰子上的数字都是1至6)。输赢规则如下:
1. 若某一个骰子上的数字与玩家所押注的匣子号相同,则玩家拿回自己的押注,庄家按他押注的数目赔付(即1比1的赔率)。
2. 若有两个骰子上的数字与玩家所押注的匣子号相同,则玩家拿回自己的押注,庄家按他押注的数目的2倍赔付(即1比2的赔率)。
3. 若三个骰子上的数字都与玩家所押注的匣子号相同,则玩家拿回自己的押注,庄家按他押注的数目的6倍赔付(即1比6的赔率)。
4. 若玩家所押注匣子号与某个骰子示数乘积等于另外两个骰子示数的乘积,则玩家拿回自己的押注,庄家也不赔付(流局)。
5. 若以上规则有同时满足者,玩家可以选择对自己最有利的规则。规则执行后,则庄家收获所有匣子上剩余的押注。
乍一看起来,好像规则对玩家有利,庄家吃亏。但经过大量实战,会发现局面很难说,于是怀疑是否庄家做了手脚,庄家则十分爽快地说:可以由玩家提供骰子,甚至也可以由玩家来投掷骰子。
你的任务是:通过编程模拟该过程。模拟50万次,假定只有1个玩家,他每次的押注都是1元钱,其押注的匣子号是随机的。再假定庄家有足够的资金用于赔付。最后计算出庄家的盈率(庄家盈利金额/押注总金额)。
【输入、输出格式要求】
程序无输入,程序运行输出庄家的盈率,四舍五入保留到小数后3位。
【注意】
请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!
在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
请把所有函数写在同一个文件中,调试好后,拷贝到【考生文件夹】下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。
源代码中不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。
允许使用STL类库,但不能使用MFC或ATL等非ANSI c++标准的类库。
例如,不能使用CString类型(属于MFC类库),不能使用randomize, random函数(不属于ANSI C++标准)
题目不允许使用srand(),rand()函数、
程序代码:
#include<stdio.h> #include<stdlib.h> #include<time.h> #define M 6 int profit = 0; int jiazi; int A_dice; int B_dice; int C_dice; void renshaizi(double n) { int falg = 0; int digit = 0; int i = 0; srand(time(NULL)); while(i<n) { falg = 0; digit = 0; jiazi = 1 + rand()%M; A_dice = 1 + rand()%M; B_dice = 1 + rand()%M; C_dice = 1 + rand()%M; if(jiazi == A_dice || jiazi == B_dice || jiazi == C_dice) { profit--; falg ++; if((jiazi == A_dice &&jiazi == B_dice)||(jiazi == B_dice &&jiazi == C_dice)||(jiazi == A_dice && jiazi == C_dice)) { profit--; falg++; if(jiazi == A_dice && jiazi == B_dice && jiazi == C_dice) { profit = profit - 4; falg = falg + 4; } } } if((jiazi * A_dice == B_dice * C_dice) || (jiazi * B_dice == A_dice * C_dice) ||(jiazi * C_dice == B_dice * A_dice)) { digit = 1; if(falg +digit!=7) { profit = profit + falg; } } if(falg == 0) { profit++; } i++; } } int main(void) { double n; double sum = 0.0; scanf("%lf",&n); renshaizi(n); sum = n/profit; printf("%.3f",sum); puts(""); return 0; } 这是我使用srand()与rand()函数写出来的不知道对不对。 望路过的人帮忙看下。 如果哪位懂不用srand(),rand()函数的人请您给一些思维。让小弟顺利升完这一级。