【编程题】(满分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 古代赌局;
import java.text.DecimalFormat;
public class Main {
public static void main(String[] args){
int m = 1;
int n ; //匣子号
int a ; //骰子
int b ;
int c ;
double sum = 0; //庄家盈率金额
//模拟 500000的次数,获取总和
for(int i=0;i<500000;i++){
n = (int)(Math.random()*6)+1;
a = (int)(Math.random()*6)+1;
b = (int)(Math.random()*6)+1;
c = (int)(Math.random()*6)+1;
sum+=f(n, a, b, c, m);
}
double result = sum/500000f;
DecimalFormat df = new DecimalFormat("#0.000");
System.out.println(df.format(result));
}
/**
* 返回庄家的盈利情况
* @param n
* @param a
* @param b
* @param c
*/
public static int f(int n , int a ,int b , int c,int m){
int result = 0;
if(a==n && b==n && c==n){
result -= m*6;
}else if(a==n && b==n || a==n&& c==n || b==n&&c==n){
result -= m*2;
}else if(a==n || b==n || c==n){
result -= m;
}else if(!(a*n == b*c || b*n==a*c || c*n==a*b)){
result += m;
}
return result;
}
}
分享到:
相关推荐
该题是2012年C/C++语言高职蓝桥杯决赛题中的古代赌局,该题在官网上没有发布正确答案,这是本人自己理解所编写的代码,希望对您有帮助,O(∩_∩)O谢谢!
蓝桥杯+数量周期+提取子串+源码变换+古代赌局+火柴游戏
6. **文件"古代赌局.txt"**:可能包含一些基于概率和统计的赌博游戏分析,这对于理解随机过程、概率模型和决策理论有帮助。 7. **文件"密码发生器.txt"**:密码生成通常涉及到随机数生成和安全算法,比如MD5、SHA...
如果“赚钱项目”与角力记有关,那么可能是指古代角力比赛的经济价值,如赌局、观赏门票收入,或者是角力训练作为增强体质、提高个人能力的手段,从而帮助人们在其他领域取得成功。 总的来说,这份"中华古籍(古代...
网络营销经济互联网世界杯赌局.ppt
贝克汉姆:从“赌局”中领悟父亲的良苦用心 贝克汉姆,世界顶级足球运动员,从小就开始踢球。他的父亲一直苦心培训他,顽皮的他渐渐奠定了对足球事业的热爱。贝克汉姆的故事告诉我们,任何成功都需要努力和实践。 ...
比如文中提到的阳子春,他相信自己的好运与洗脚有关,便在输掉赌局后决定停止洗脚。这种迷信行为虽然看起来可笑,却深刻反映了古人对因果报应的坚信不疑。这些迷信和习俗在古代社会生活中无处不在,影响着人们的行为...
“东家”在赌博中是赌局的组织者,在宴请中则指承担费用和负责安排事宜的人。 综上所述,主人称“东”的现象,不仅展现了中国古代文化中方位观念对社会交往的影响,还体现了古代礼仪习俗如何塑造并传承了特定的语言...
在实验中,参与者面临两个赌局,赌局A保证获得100万元,而赌局B有10%的概率获得500万元,89%的概率获得100万元,1%的概率一无所获。尽管赌局B的期望值高于赌局A,但大部分参与者选择了A,这表明他们在面对确定性收益...
第二条是,对于那些期望收益率大于零的赌局,也要注意仓位问题:如果赌局输的净收益率≤-1 并且输的概率大于零,则无论这种概率多么小,最优的选择永远不会满仓。 凯利公式的重要性在于,它提供了一种系统的方法来...
C++ 21点BlackJack模拟器。和电脑二人对战,可多副牌,有筹码计算,筹码归零后游戏结束。玩家21点会翻倍。可以加倍要牌。庄家开始抽牌后,点数和大于等于17才会停止。牌堆剩余数量不足五分之一后会重新洗牌。...
通过Builder模式,我们可以创建一个通用的赌局构建器,然后根据需要定制各个赌局的具体细节,这样可以保持代码的整洁和模块化。 4. **装饰器模式**:装饰器模式允许在运行时动态地给对象添加新的功能,而不影响其他...
替代性则表明,如果两个赌局在各个结果上分配的概率相同,那么这两个赌局被视为等价。这些公理有助于理解人们对风险的态度和行为。 Von Neumann-Morgenstern (VNM) 效用函数是不确定性理论中的核心工具,它提供了一...
【C++编写的掷骰子程序】是一种基于概率和随机数生成的游戏,它在编程领域中常被用作教学示例。在这个程序中,我们主要涉及C++语言的基础知识,如变量、条件语句、循环以及随机数生成。C++是面向对象的编程语言,而...
剧中的两个赌局,即魔鬼与上帝的赌局以及浮士德与魔鬼的赌约,是全剧的核心情节,它们体现了人类追求的本质。一方面,魔鬼与上帝的赌局揭示了在追求真理的过程中,人们可能面临的道德沦丧和精神堕落的危险;另一方面...
exe文件,方便得很,喊好用的一个偶赌局比赛
这场赌局的背后,实际上是互联网思维与实体经济思维的对决。雷军坚信小米模式,即互联网思维,能够在5年内超越格力的实体经济模式。而董明珠则坚持实体制造和品质控制的优势,认为格力不会轻易被互联网企业打败。 ...
《数值策划笔试题解析与游戏设计策略》 在IT行业中,尤其是游戏开发领域,数值策划是一项至关重要的工作。它涉及到游戏的经济系统、平衡性以及玩家体验。本文将通过分析几道典型的数值策划笔试题,深入探讨相关知识...
当小伙子决定接受赌约,焦点转向了赌局的执行,特别是那些细节描绘,如手指被绑的过程,让读者更加投入。此时的氛围越来越紧张,直至点火的瞬间达到一个小高潮。 第三部分,随着赌局的进行,焦点集中在小伙子能否...
另一个项目主题是“永不停止的赌局”,它要求学生模拟两个玩家之间的系列赌局,其中输者会失去一半的赌注。这个项目涉及到概率论和随机过程的知识,学生需要编程实现模拟,并分析不同的赌局策略。通过这些项目,学生...