「java骰子最大期望」java掷骰子的游戏怎么写
本篇文章给大家谈谈java骰子最大期望,以及java掷骰子的游戏怎么写对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、关于Java算法编程的 做一个小游戏,电脑随机生成三个骰子(每个骰子点数为1~6),将这三个数相加。
- 2、同时掷两枚骰子,观察它们出现的点数,求两枚骰子出现最大点数的期望。
- 3、概率问题,投骰子问题:3次投骰子,期望是多少?
- 4、JAVA编程 请帮忙
- 5、完成一个java project的构建,创建一个“骰子”类,命名为Dice?
关于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掷骰子的游戏怎么写的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。