java - 如何抛硬币并显示反面和正面计数?

标签 java random coin-flipping

我是 Java 的初学者,但仍然充满热情。 我得到了这样的练习:“编写一个抛硬币的模拟器程序:抛硬币一千次,然后打印出出现反面的次数和出现正面的次数” 这就是我到目前为止所尝试做的。

import java.util.Random; 
import java.util.regex.Pattern; 

public class coin { 

    public static void main( String [] args ) { 

        Random r = new Random(); 
        Pattern tail = Pattern.compile("Tail+"); 
        Pattern head = Pattern.compile("Head+"); 
        String flips = ""; 

        for (int i = 0; i < 1000; i++) { 
            flips += r.nextInt(100) % 2 == 0 ? "Head" : "Tail"; 
        } 
        String[] heads = head.split( flips ); 
        String[] tails = tail.split( flips ); 
        //Display
        System.out.println("Times head was flipped:" + heads.length); 
        System.out.println("Times tail was flipped:" + tails.length); 
    }
}

该程序似乎正在运行,但它总是给我几乎一对数量的正面和反面,总数超过 1000,至少 1 或更多。 请问,有人有解决这个问题的办法吗?我哪里错了? 谢谢

最佳答案

您可以在单独的变量中跟踪计数,而不是将结果附加到字符串中,然后拆分字符串并计算“Head”/“Tail”的出现次数:

int headCount = 0;
int tailCount = 0;

for (int i = 0; i < 1000; i++) {
    if(r.nextInt(100) %2 == 0)
    {
      headCount++;
    }
    else
    {
      tailCount ++;
    }

  System.out.println("Times head was flipped:" + headsCount); 
  System.out.println("Times tail was flipped:" + tailCount); 

}

关于java - 如何抛硬币并显示反面和正面计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23019822/

相关文章:

java - 使用 Amazon AWS 和 tomcat 设置网络服务

java - 带图形的循环 - 生成图形时的错误

java - 如何对依赖于随机生成的数字的代码进行单元测试?

r - 从硬币翻转算法生成随机均匀随机数往往会生成比预期更多的 0

java - 如何使用 POI api 在 Java 中访问受密码保护的 Excel 工作簿

java - 断言部分页面源代码不起作用

c++ - 计算 C++ 中是否有 1/4 机会发生某些事情的最佳方法?

C++ 在另一个函数中调用函数

python-3.x - 自动化无聊的事情 - 硬币翻转条纹

java - 需要有关嵌套滚动 Pane 逻辑的帮助