`
1140566087
  • 浏览: 558454 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
博客专栏
2c4ae07c-10c2-3bb0-a106-d91fe0a10f37
c/c++ 入门笔记
浏览量:18509
3161ba8d-c410-3ef9-871c-3e48524c5263
Android 学习笔记
浏览量:313839
Group-logo
J2ME 基础学习课程集
浏览量:18692
A98a97d4-eb03-3faf-af96-c7c28f709feb
Spring 学习过程记录...
浏览量:17550
社区版块
存档分类
最新评论

古代赌局

阅读更多

【编程题】(满分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语言决赛之古代赌局

    该题是2012年C/C++语言高职蓝桥杯决赛题中的古代赌局,该题在官网上没有发布正确答案,这是本人自己理解所编写的代码,希望对您有帮助,O(∩_∩)O谢谢!

    蓝桥杯+数量周期+提取子串+源码变换+古代赌局+火柴游戏

    蓝桥杯+数量周期+提取子串+源码变换+古代赌局+火柴游戏

    蓝桥杯历年试题(含2013第四届)

    6. **文件"古代赌局.txt"**:可能包含一些基于概率和统计的赌博游戏分析,这对于理解随机过程、概率模型和决策理论有帮助。 7. **文件"密码发生器.txt"**:密码生成通常涉及到随机数生成和安全算法,比如MD5、SHA...

    中华古籍(古代书籍)武术类角力记共5页.pdf.zip

    如果“赚钱项目”与角力记有关,那么可能是指古代角力比赛的经济价值,如赌局、观赏门票收入,或者是角力训练作为增强体质、提高个人能力的手段,从而帮助人们在其他领域取得成功。 总的来说,这份"中华古籍(古代...

    古今中外名人励志故事[整理].pdf

    贝克汉姆:从“赌局”中领悟父亲的良苦用心 贝克汉姆,世界顶级足球运动员,从小就开始踢球。他的父亲一直苦心培训他,顽皮的他渐渐奠定了对足球事业的热爱。贝克汉姆的故事告诉我们,任何成功都需要努力和实践。 ...

    初中语文文摘社会趣史拾遗_元芹

    他相信自己的好运与洗脚有关,因此在输掉赌局后决定再也不洗脚,结果竟然好运连连。然而,当他打破誓言再次洗脚后,不幸降临,这反映了古人对某些行为和习惯的迷信信仰,以及对因果报应的笃信。 5. 社会地位与个人...

    月考试题答案.doc

    3. 古代文化常识:试题中提到的"除"字在古代汉语中意味着任命官职,提示学生需要了解并掌握古代文化背景下的词汇和用法。 4. 文言文阅读理解:试卷中的翻译题展示了对学生文言文阅读和理解能力的考察,包括对句子...

    小学语文知识为何主人称“东”

    在赌博中,赌局的组织者被称为“东家”,在请客吃饭时,“做东”或“做东道”则是指承担费用和安排事务的一方。 总的来说,"小学语文知识为何主人称‘东’"这一问题,揭示了中国传统文化中方位观念对社会交往的影响...

    2018年九年级语文上册第二单元综合测试卷新人教版

    3. 古诗文填空考察了学生对古代诗词的熟悉程度,包括韩愈的《左迁至蓝关示侄孙湘》、欧阳修的《醉翁亭记》以及苏轼的《水调歌头》,同时提到了描写黄河的诗句,展现了黄河作为中国重要文化符号的形象。 4. 名著阅读...

    tianji.rar_horse racing_visual c_田忌赛马

    在古代中国,田忌赛马的故事流传甚广,它蕴含着策略和智慧的运用。而在现代计算机科学中,这一问题被引入到算法设计中,成为了经典的动态规划问题。动态规划是一种解决最优化问题的有效方法,它通过构建子问题并存储...

Global site tag (gtag.js) - Google Analytics