【发布时间】:2013-11-28 00:23:12
【问题描述】:
我需要让硬币不公平,让硬币正面的次数是反面的两倍。我目前不知道从哪里开始转动 flip() 类,以便它显示的正面是反面的两倍。我要问的是,我必须实施什么算法才能让头部的显示频率是尾部的两倍?
这是硬币文件:
public class Coin {
private final int HEADS = 0;
private boolean face;
public Coin() {
flip();
}
public void flip() {
face = ((int) (Math.random() * 2) != 0);
}
public boolean isHeads() {
return face;
}
public String toString() {
return (isHeads()) ? "Heads" : "Tails";
}
}
这里是 CountFilps 文件:
public class CoinFlips {
public static void main(String[] args) {
final int FLIPS = 1000;
int heads = 0, tails = 0;
Coin myCoin = new Coin();
for (int count = 1; count <= FLIPS; count++) {
myCoin.flip();
if (myCoin.isHeads()) {
heads++;
} else {
tails++;
}
}
System.out.println("Number of flips: " + FLIPS);
System.out.println("Number of heads: " + heads);
System.out.println("Number of tails: " + tails);
}
}
编辑:感谢大家的快速回复!不知道这就是我需要做的一切,我感到很傻。
【问题讨论】:
-
公平是
2中的一尾机会。您正在3中寻找机会。 -
当
math.random()在 0.000 和 0.6667 之间时为头,否则为尾
标签: java