「java骰子最大期望」java掷骰子的游戏怎么写

博主:adminadmin 2023-03-19 22:56:10 228

本篇文章给大家谈谈java骰子最大期望,以及java掷骰子的游戏怎么写对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

关于Java算法编程的 做一个小游戏,电脑随机生成三个骰子(每个骰子点数为1~6),将这三个数相加。

1 设计一个int数组!长度为3.

2 设计3个变量!a, b, c. 分别取值为1-6.int a= new Random(6)+1.重复b, c.

3 把a, b, c放入数组中!

4 循环遍历数组把三个元素相加 输出这把总和是

5 判断总和能否被2整除,如果能,输出是双数,不能输出是单数!

6 判断大小 大于等于4小于等于10 显示开小

大于等于11小于等于17显示开大

7 遍历数组 判断三个元素是否相等 相等显示开豹子。。

手机打字!!有什么问题在问吧

同时掷两枚骰子,观察它们出现的点数,求两枚骰子出现最大点数的期望。

两个骰子同时出现最大点数的可能是1/36,则期望是:12×1/36=1/33331

概率问题,投骰子问题:3次投骰子,期望是多少?

记点数为 x 。

如果投一次就中止,那么 P(x=i)=1/6(i=1,2,3,4,5,6),

因此得到钱数的期望=1/6*(1+2+3+4+5+6)=7/2 元;

如果是投两次或三次中止,由于只取最后一次的结果,所以得到钱数的期望仍是 7/2 元(相当于前面投的都不算)。

所以策略就是 :如果第一次投掷点数不超过 3 ,就再投第二次;如果第二次投的点数也不超过 3 ,就再投第三次。也就是说当点数大于 3 时中止。

JAVA编程 请帮忙

这游戏设计的,电脑哪有胜算啊,点数到了20就全都放弃了,永远也到不了100啊。以下是代码:

package com.sino.baiduzhidao.throwDie;

import java.util.Random;

/**

 * 骰子

 * @author Yanghl

 *

 */

public class Die implements Runnable {

private Random r;

private int point;

public Die() {

r = new Random();

}

/**

 * 获得骨子点数

 * @return 骰子点数

 */

public int getPoint() {

return point;

}

@Override

public void run() {

//设置骰子点数为1-6的随机数

point = r.nextInt(6) + 1;

System.out.print(point + " ");

}

}

package com.sino.baiduzhidao.throwDie;

public class PairOfDice {

/**

 * 骰子1

 */

private Die die1;

/**

 * 骰子2

 */

private Die die2;

public PairOfDice() {

die1 = new Die();

die2 = new Die();

}

/**

 * 掷出两个骰子,并打印结果

 */

public void throwDie() {

System.out.print("骰子点数:");

//启用两个线程,分别转动两个骰子,模拟两个骰子同时被掷出

Thread t1 = new Thread(die1);

Thread t2 = new Thread(die2);

t1.start();

t2.start();

try {

//等待骰子结束

t1.join();

t2.join();

System.out.println();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

/**

 * 两个骰子点数都为6

 * @return

 */

public boolean isDouble6() {

if(die1.getPoint() == 6  die2.getPoint() == 6) {

return true;

}

return false;

}

/**

 * 只有一个骰子点数为1

 * @return

 */

public boolean isSingle1() {

if(die1.getPoint() == 1 || die2.getPoint() == 1) {

if(isDouble1()) {

return false;

}

return true;

}

return false;

}

/**

 * 两个骰子点数都为1

 * @return

 */

public boolean isDouble1() {

if(die1.getPoint() == 1  die2.getPoint() == 1) {

return true;

}

return false;

}

/**

 * 获取两个骰子点数总和

 * @return

 */

public int getPointNum() {

return die1.getPoint() + die2.getPoint();

}

public Die getDie1() {

return die1;

}

public Die getDie2() {

return die2;

}

}

package com.sino.baiduzhidao.throwDie;

public class BoxCars {

public static void main(String[] args) {

PairOfDice pod = new PairOfDice();

int times = 0;

for(int i=0;i100;i++) {

pod.throwDie();

if(pod.isDouble6()) {

times ++;

}

}

System.out.println("掷骰子100次,都是6的次数:" + times);

}

}

以下是人机大战的代码:

package com.sino.baiduzhidao.throwDie;

/**

 * 玩家类

 */

public class Player {

/**

 * 玩家名称

 */

private String name;

/**

 * 掷骰子总数

 */

private int throwTimes;

/**

 * 总点数

 */

private int pointNum;

public Player(String name) {

this.name = name;

this.pointNum = 0;

this.throwTimes = 0;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getThrowTimes() {

return throwTimes;

}

public void setThrowTimes(int throwTimes) {

this.throwTimes = throwTimes;

}

public int getPointNum() {

return pointNum;

}

public void setPointNum(int pointNum) {

this.pointNum = pointNum;

}

}

package com.sino.baiduzhidao.throwDie;

import java.util.Scanner;

public class Pig {

/**

 * 电脑默认最大点数,超过后均放弃掷骰子

 */

private static int COMPUTER_DEFAULT_MAX_POINT = 20;

/**

 * 目标分数

 */

private static int TARGET_POINT = 100;

/**

 * 一对骰子

 */

private PairOfDice pod;

/**

 * 玩家

 */

private Player player;

/**

 * 电脑

 */

private Player computer;

/**

 * 构造函数,初始化骰子

 */

public Pig() {

pod = new PairOfDice();

player = new Player("player");

computer = new Player("computer");

}

/**

 * 开始游戏

 */

public void startPlay() {

while(true) {

//先玩家,后电脑

System.out.println("-----------------玩家---------------");

if(isThrowDie()) {

if(playerThrow(player)) {

break;

}

} else {

System.out.println("放弃掷骰子");

}

System.out.println();

System.out.println("-----------------电脑---------------");

if(computer.getPointNum()  COMPUTER_DEFAULT_MAX_POINT) {

if(playerThrow(computer)) {

break;

}

} else {

System.out.println("放弃掷骰子");

}

System.out.println();

}

}

/**

 * 玩家掷骰子,并返回玩家总分是否达到TARGET_POINT

 * @return 

 */

private boolean playerThrow(Player p) {

pod.throwDie();

//掷骰子次数 +1

p.setThrowTimes(p.getThrowTimes() + 1);

if(pod.isDouble1()) {

//掷出两个1,分数清0

p.setPointNum(0);

System.out.println("两个点数均为1,总分清0");

} else if(pod.isSingle1()) {

//掷出单个1,不加分

System.out.println("有一个点数为1,不能计入总分");

} else {

p.setPointNum(p.getPointNum() + pod.getPointNum());

}

System.out.println("当前总分:" + p.getPointNum());

//判断玩家总分是否达到TARGET_POINT

if(p.getPointNum() = TARGET_POINT) {

System.out.println("Game Over! " + p.getName() + " win!");

return true;

} else {

return false;

}

}

/**

 * 选择是否掷骰子

 * @return 

 */

private boolean isThrowDie() {

Scanner sc = new Scanner(System.in);

System.out.print("选择是否掷骰子(Y:掷骰子; N:放弃):");

while(true) {

String in = sc.nextLine();

if("y".equalsIgnoreCase(in)) {

return true;

} else if("n".equalsIgnoreCase(in)) {

return false;

} else {

System.out.print("请选择Y/N:");

}

}

}

/**

 * @param args

 */

public static void main(String[] args) {

new Pig().startPlay();

}

}

完成一个java project的构建,创建一个“骰子”类,命名为Dice?

Dice代码如下:

import java.util.Random;

//(1)创建一个“骰子”类,命名为Dice。

public class Dice {

// 提示:初始化两个Dice对象。

//(2)“骰子”类有两个属性:①最大值为固定值6,②点数为1-6之间的整数。属性均设置为private。

private static int max = 6;

private int point;

// (3)“骰子”类有两个构造函数:①无形参的构造函数,将点数默认值设置为1;②有1个形参的构造函数,将形参赋值给点数。

public Dice() {

this.point = 1;

}

public Dice(int point) {

this.point = point;

}

// (4)自动生成骰子点数的get和set方法。

public static int getMax() {

return max;

}

public static void setMax(int max) {

Dice.max = max;

}

public int getPoint() {

return point;

}

public void setPoint(int point) {

this.point = point;

}

// (5)编写一个表示“掷骰子”的方法,将点数和函数返回值设置为1-6之间的随机整数。

// 提示:Math.random() //随机选取=0.0且1.0的double值

// double转int的方法:(int) double值 //转换后会舍弃小数点后面的值

public int throwDice() {

int result = 0;

while (true) {

int random = (int) (Math.random() * 10);

if (random 0 random = max) {

result = random;

break;

}

}

return result;

}

}

测试类方法如下:

import java.math.BigDecimal;

import java.util.ArrayList;

import java.util.List;

//(6)新建一个类,在其main()函数中调用Dice类,实现以下功能:

public class TestDice {

public static void main(String[] args) {

// ①掷两个骰子,显示每个骰子的点数,以及点数之和;

Dice dice = new Dice();

int one = dice.throwDice();

int two = dice.throwDice();

System.out.println("两次点数之和:" + (one + two));

// ②输入设置两个骰子的点数,显示两个骰子的点数之和。

Dice dice2 = new Dice(2);

Dice dice3 = new Dice(6);

System.out.println("所设置的点数之和:" + (dice2.getPoint() + dice3.getPoint()));

// ③连续10次掷两个骰子,显示每次掷骰子的结果,以及两个骰子10次点数的平均值。

Dice dice4 = new Dice();

ListInteger points1 = new ArrayList();

ListInteger points2 = new ArrayList();

for (int i = 0; i 10; i++) {

int first = dice4.throwDice();

System.out.println("第一个骰子掷:" + (i + 1) + "次点数是:" + first);

int second = dice4.throwDice();

System.out.println("第二个骰子掷:" + (i + 1) + "次点数是:" + second);

points1.add(first);

points2.add(second);

}

long sum1 = points1.stream().reduce(Integer::sum).orElse(0);

System.out.println("第一个骰子10次点数的平均值:" + new BigDecimal(Long.valueOf(sum1).toString()).divide(new BigDecimal(Integer.valueOf(points1.size()).toString())));

long sum2 = points2.stream().reduce(Integer::sum).orElse(0);

System.out.println("第二个骰子10次点数的平均值:" + new BigDecimal(Long.valueOf(sum2).toString()).divide(new BigDecimal(Integer.valueOf(points2.size()).toString())));

}

}

关于java骰子最大期望和java掷骰子的游戏怎么写的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。