【编程题】(满分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谢谢!
网络营销经济互联网世界杯赌局.ppt
每个骰有6面,点数为1,2,3,4,5,6,游戏者在程序运行时输入一个无符号整数,作为产生的随机数的种子,每轮投两轮,第一轮如果和数为7或11则为胜,游戏结束……
exe文件,方便得很,喊好用的一个偶赌局比赛
骰子安装$ npm i @idlework/dice --save用法import Dice from 'dice'export default class Map extends Dice { constructor ( dice , faces ) { super ( dice , faces ) }} 或者import Dice from 'dice'const dice =...
本文依据约翰·拉里·凯利对单项赌局建立的盈利函数模型,建立了仓位控制下的多项投资组合的几何平均收益率函数模型,分析证明建立投资组合可以有效提高投资收益。求解多项投资组合的最优投资率及最大几何平均收益率...