西周 发表于 2019-4-20 10:20:41

帮忙看一段投骰子的java程序,谢谢!

题目要求是两个人投骰子,每次抛的点数加上上一次抛的点数之和与对手进行比较,若点数和比对方大5以上(包括5),则你赢,否则对手赢,模拟100000次游戏,并计算平均一局抛骰子的次数。

package cn.edu.ccnu.cs2017211667;

import java.util.Random;

public class Control {
        public static void main(String[] args) {
        int sums1=0;
        int sums2=0;
        int count=0;
        int sums1_sums2=sums1-sums2;
      int total=0;

        for(int i=0;i<100000;i++) {
        do {
          Random d1 = new Random();//这是一个生成随机数字的函数0-1
          int s1=d1.nextInt(6);
          sums1+=s1;
          
                Random d2 = new Random();//这是一个生成随机数字的函数0-1
          int s2=d2.nextInt(6);//产生0-6的随机数
          sums2+=s2;
          
          count++;
        }while(Math.abs(sums1_sums2)<5);
               
                if(sums1_sums2>=5)
                        System.out.println("前者赢");
            else
                        System.out.println("后者赢");
        }
        total+=count;
        }
         System.out.println("平均一局要扔"+total/100000+"次骰子");
}

1005204767 发表于 2019-4-27 22:46:56

所以你要问什么呢?

1005204767 发表于 2019-4-27 22:47:37

华师的盆友~

1005204767 发表于 2019-4-27 22:53:22

你这写的貌似不符合题意 不该用 do while

zwhe 发表于 2020-6-4 11:17:32

{:5_108:}

彦飞tioy 发表于 2020-6-5 08:57:51

Random 需要 +1
for 循环<=

yumson 发表于 2021-8-13 11:34:25

第一,你需要实现平均一局掷色子的次数。count不应该是每执行一次random.nextIn()就要自加吗。为什么两个选手各扔一次骰子但是count++只执行一次?
第二,创建Random对象不要放在for循环里。
这是我看出来的两处问题,我水平也高,有说得不对的地方欢迎指正。
页: [1]
查看完整版本: 帮忙看一段投骰子的java程序,谢谢!