09骰子游戏

骰子游戏

我们来玩一个游戏。同时掷出3个普通骰子(6个面上的数字分别是1~6)。如果其中一个骰子上的数字等于另外两个的和,你就赢了。

下面的程序计算出你能获胜的精确概率(以既约分数表示)

public class Main{public static int gcd(int a, int b){if(b==0) return a;return gcd(b,a%b);}

public static void main(String[] args){ int n = 0;for(int i=0; i<6; i++)for(int j=0; j<6; j++)for(int k=0; k<6; k++){if(________________________________) n++; //填空位置}

int m = gcd(n,6*6*6);System.out.println(n/m + "/" + 6*6*6/m);}}

仔细阅读代码,填写划线部分缺少的内容。

注意:不要填写任何已有内容或说明性文字。

【分析】
使用三个变量去模拟骰子每次出现的点数,统计出现一个数字等于另外两个数字之和。
最大的陷阱是没有直接去模拟1~6,而是用的0~5,结果是不一样的。
import java.util.*;
public class Lanq {
    //1534
    public static void main(String[] args)
    {
        int n = 0;
        for(int i=0; i<6; i++)
            for(int j=0; j<6; j++)
                for(int k=0; k<6; k++){
                    if(i==j+k+1||j==i+k+1||k==i+j+1) n++; //填空位置
                }

        int m = gcd(n,6*6*6);
        System.out.println(n/m + "/" + 6*6*6/m);
    }

        public static int gcd(int a, int b)
        {
            if(b==0) return a;
            return gcd(b,a%b);
        }

    }

  

原文地址:https://www.cnblogs.com/passion-sky/p/8541970.html

时间: 2024-09-30 06:54:42

09骰子游戏的相关文章

华为历年试题(掷骰子游戏 7)

问题描述: 在掷骰子游戏中,会根据所掷数字在地图中前进几步,前进完成后需要根据当前地图位置所示的障碍进行相应操作,其中障碍表示: 1)  9:无障碍 2)  1:停掷一轮,即下轮所掷数字无效: 3)  2:后退两步,如果已经到起点不再后退: 4)  3:奖励前进一步 如果在游戏过程中,已经走到地图终点,则游戏结束.根据输入的地图数组,和5个骰子数的数组,返回最终玩家前进了多少步. 要求实现函数: void dice(int map_len, int* map, int* dice_val, in

模拟算法_掷骰子游戏&amp;&amp;猜数游戏

模拟算法是用随机函数来模拟自然界中发生的不可预测的情况,C语言中是用srand()和rand()函数来生成随机数. 先来介绍一下随机数的生成: 1.产生不定范围的随机数 函数原型:int rand() 产生一个介于0~RAD_MAX间的整数,其具体值与系统有关系.Linux下为2147483647.我们可以在include文件夹中的stdlib.h中可以看到(Linux在usr目录下,Windows在安装目录下) 1 #include<stdio.h> 2 #include<stdlib

【Java自学】掷骰子游戏

1 package codeTask_FangFa; 2 /*5.29 掷骰子游戏. 规则: 3 扔两个骰子,计算和. 2.3或12(称作掷骰子)你就输了,7或11(称作自然),你就赢了.如果是其他数字. 4 继续掷,直到出来一个7(你输了)或者出来一个和刚才一样的(你赢了). 5 */ 6 7 import java.util.Random; 8 public class ZhiTouZi { 9 public static void main(String[] args){ 10 11 Sy

华为机试—掷骰子游戏

在掷骰子游戏中,会根据所掷数字在地图中前进几步,前进完成后需要根据当前地图位置所示的障碍进行相应操作,其中障碍表示: 1)9:无障碍 2)1:停掷一轮,即下轮所掷数字无效: 3)2:后退两步,如果已经到起点不再后退: 4)3:奖励前进一步 如果在游戏过程中,已经走到地图终点,则游戏结束.根据输入的地图数组,和5个骰子数的数组,返回最终玩家前进了多少步. 示例 1)输入:map_len = 15, map = {9,1,9,9,9,2,9,9,9,9,9,9,9,9,9},dice_val = {

【整理】HTML5游戏开发学习笔记(1)-骰子游戏

<HTML5游戏开发>,该书出版于2011年,似乎有些老,可对于我这样没有开发过游戏的人来说,却比较有吸引力,选择自己感兴趣的方向来学习html5,css3,相信会事半功倍.不过值得注意的是,该书的游戏是些小的游戏,内容相对比较基础,而且html5标准已经正式发布,可能会和书中所描述有少许出处.当然了,书中的小游戏还是比较不错的,适合我这样的前端开发不咋地的来练手,学习方式是在以自己的思路实现之后,再来看书中的实现思路,因为每个人有自己的开发习惯. 1.预备知识在做第一个骰子游戏开发前,必须知

掷骰子游戏和条件语句

1.java掷骰子游戏 public class iftest { public static void main(String[] args) { System.out.println("#####掷骰子游戏#####"); System.out.println("#################"); //投掷三个色子看看今天手气怎么样? int i = (int)(6*Math.random()+1); int j = (int)(6*Math.random

掷骰子游戏窗体实现--Java初级小项目

掷骰子 **多线程&&观察者模式 题目要求:<掷骰子>窗体小游戏,在该游戏中,玩家初始拥有1000的金钱,每次输入押大还是押小,以及下注金额,随机3个骰子的点数,如果3个骰子的总点数小于等于9,则开小,否则开大,然后判断玩家是否押对,如果未押对则扣除下注金额,如果押对则奖励和玩家下注金额相同的金钱. 分析:这个题目要求灵活运用多线程的相关知识,达到点击开始按钮时,有3个线程启动,分别控制3颗骰子的转动,在3颗骰子全部转完以后,回到主线程计算游戏结果. 1 //3个线程控制3颗骰

重温C++---骰子游戏---ShinePans

//this is a program witch played by two people //二人游戏,若第一个抛骰子,抛两次的和为7或11则第一人直接胜利,第二人直接失败 //若第一个人抛骰子,抛两次的和为2,3或12,则第一个人直接失败,第二人胜利 //若第一个人抛筛子,抛两次的和以上均不是,则由第二个人抛,直到有一方胜利 #include <iostream> #include <stdlib.h> #include <ctime> //获取系统时间的头文件

骰子游戏问题

题面: 现在要求你编写一道程序来模拟骰子的滚动.骰子不滑动也不跳动,只在桌子上向四个方向滚动,即东西南北.每次一开始,玩家使骰子的面值1,2,3对应上,北,西.骰子的相对两面的和都为7. 你的程序能接受一系列的输入命令,命令内容为north,south,east,west.如north,指骰子向北滚动一次,北面变为底面,上面变为北面.滚动角度为90°.你的程序必须计算出骰子最后朝上的数字. 输入: 输入包括一系列命令序列,每个序列对应新游戏的开始,其第一行是一个整数n(0<n<=1024),表