模拟T次投掷硬币

一 代码

package Flips;

import Counter.Counter;
import common.StdOut;
import common.StdRandom;

/**
* Copyright (C), 2020-2020, XXX有限公司
* FileName: Flips
* Author:   cakin
* Date:     2020/1/11
* Description: 模拟T次投掷硬币
*/
public class Flips {
    public static void main( String[] args ) {
        int T = Integer.parseInt(args[0]);
        Counter heads = new Counter("heads");
        Counter tails = new Counter("tails");
        for (int t = 0;t<T;t++){
            if(StdRandom.bernoulli(0.5)){
                heads.increment();
            }else {
                tails.increment();
            }
        }
        StdOut.println(heads);
        StdOut.println(tails);
        StdOut.println("delta:"+Math.abs(heads.tally()-tails.tally()));
    }
}

二 测试结果

当入参为10000时的测试结果。

4958 heads
5042 tails
delta:84

三 代码

package Flips;


import Counter.Counter;
import common.StdOut;
import common.StdRandom;


/**
* Copyright (C), 2020-2020, XXX有限公司
* FileName: FlipsMax
* Author:   cakin
* Date:     2020/1/11
* Description: 一个接受对象参数作为对象返回值的静态方法,实现投掷硬币正反比大小
public class FlipsMax {
    public static Counter max(Counter x,Counter y){
        if(x.tally()>y.tally()) return x;
        else return y;
    }
    public static void main( String[] args ) {
        int T = Integer.parseInt(args[0]);
        Counter heads = new Counter("heads");
        Counter tails = new Counter("tails");
        for (int t = 0;t<T;t++){
            if(StdRandom.bernoulli(0.5)){
                heads.increment();
            }else {
                tails.increment();
            }
        }
        if(heads.tally()==tails.tally())
            StdOut.println("Tie");
        else StdOut.println(max(heads,tails)+" wins");
    }
}

四 测试

当投掷10000次

5042 tails wins

五 代码参考

https://gitee.com/cakin24/Algorithm

发布了4080 篇原创文章 · 获赞 538 · 访问量 296万+

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/103938587