古代赌局
2015-09-24 13:42
316 查看
古代赌局
【编程题】(满分23分)俗话说:十赌九输。因为大多数赌局的背后都藏有阴谋。不过也不尽然,有些赌局背后藏有的是:“阳谋”。
有一种赌局是这样的:桌子上放六个匣子,编号是1至6。多位参与者(以下称玩家)可以把任意数量的钱押在某个编号的匣子上。
所有玩家都下注后,庄家同时掷出3个骰子(骰子上的数字都是1至6)。输赢规则如下:
1. 若某一个骰子上的数字与玩家所押注的匣子号相同,则玩家拿回自己的押注,庄家按他押注的数目赔付(即1比1的赔率)。
2. 若有两个骰子上的数字与玩家所押注的匣子号相同,则玩家拿回自己的押注,庄家按他押注的数目的2倍赔付(即1比2的赔率)。
3. 若三个骰子上的数字都与玩家所押注的匣子号相同,则玩家拿回自己的押注,庄家按他押注的数目的6倍赔付(即1比6的赔率)。
4. 若玩家所押注匣子号与某个骰子示数乘积等于另外两个骰子示数的乘积,则玩家拿回自己的押注,庄家也不赔付(流局)。
5. 若以上规则有同时满足者,玩家可以选择对自己最有利的规则。规则执行后,则庄家收获所有匣子上剩余的押注。
乍一看起来,好像规则对玩家有利,庄家吃亏。但经过大量实战,会发现局面很难说,于是怀疑是否庄家做了手脚,
庄家则十分爽快地说:可以由玩家提供骰子,甚至也可以由玩家来投掷骰子。
你的任务是:通过编程模拟该过程。模拟50万次,假定只有1个玩家,他每次的押注都是1元钱,其押注的匣子号是随机的。
再假定庄家有足够的资金用于赔付。最后计算出庄家的盈率(庄家盈利金额/押注总金额)。
【输入、输出格式要求】
程序无输入,程序运行输出庄家的盈率,四舍五入保留到小数后3位。
【注意】
请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!
请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。
请不要使用package语句。
源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。
package marslin; public class 古代赌局14 { public static void main(String[] args) { System.out .print(d()); } public static float d() { int failure = 0; int yazhusum = 0; int sum=500000; while (yazhusum < 500000) { int shaizi1=0, shaizi2=0, shaizi3=0; int xiazi=0; int f1=0,f2=0,f3=0,f4=0; shaizi1 = (int) (Math.random() * 6)+1; shaizi2 = (int) (Math.random() * 6)+1; shaizi3 = (int) (Math.random() * 6)+1; xiazi= (int) (Math.random() * 6)+1; if (shaizi1 == shaizi2 && shaizi2 == shaizi3 && shaizi1 == xiazi) { yazhusum++; sum-=6; f1=1; } if ((f1==0)&&((shaizi1 == shaizi2 && shaizi2 == xiazi) || (shaizi1 == shaizi3 && shaizi3 == xiazi) || (shaizi3 == shaizi2 && shaizi3 == xiazi))) { yazhusum++; sum -= 2; f2=1; } if ((f1==0&&f2==0)&&((xiazi == shaizi1) || (xiazi == shaizi2 )||( xiazi == shaizi3))) { yazhusum++; sum-=1; f3=1; } if ((f1==0&&f2==0&&f3==0)&&((shaizi1 * xiazi == shaizi2 * shaizi3) || (shaizi2 * xiazi == shaizi1 * shaizi3) || (shaizi3 * xiazi == shaizi2 * shaizi1))) { yazhusum++; f4=1; } if(f1==0&&f2==0&&f3==0&&f4==0) { sum+=1; yazhusum++; } } return (float)(sum-500000)/yazhusum; } }
相关文章推荐
- MVC 控制器向View传值的三种方法
- Jquery Table 的基本操作
- Mac 下 svn 服务器的配置
- Oracle 中count函数用法
- Hibernate 缓存机制
- Android中常用adb的命令
- 填算式
- JS中字符串的链接
- Oracle EBS Model Function Technical
- C#进阶系列——DDD领域驱动设计初探(二):仓储Repository(上)
- 【练习题】在某个目录下查找是否存在某个文件或目录
- SSE指令的使用学习
- 自己常用的android studio快捷键有图有真相
- VC++_选择文件夹对话框
- 猜生日
- 在ubuntu中编译运行java程序——配置java环境变量
- 清空沙盒中的缓存
- sql的一些操作,游标分页,事务
- yii2图片上传
- C# 模拟单击网页链接