public class Coin
{
private final int HEADS = 0;
private final int TAILS = 1;
private int face;
private static int seed =0;
private Random r;
public Coin()
{
r = new Random(seed);
flip();
seed++;
}
public void flip()
{
face = r.nextInt(2);
}
public int getFace()
{
return face;
}
public void setFace(int newFace)
{
face = newFace;
}
public boolean isHeads()
{
return (face == HEADS);
}
public String toString()
{
String faceName;
if (face == HEADS)
faceName = "Heads";
else
faceName = "Tails";
return faceName;
}
public static void main(String[] args)
{
Coin myCoin = new Coin();
double randnumber =Math.random();
int headCount=0;
for (int i =1; i<=100; i++)
{
myCoin.flip();
if(myCoin.isHeads())
{
headCount++;
}
}
System.out.println("If I flip my coin 100 times, I get " + headCount + " heads.");
headCount =0;
for (int i =1; i<=100; i++)
{
Coin yourCoin = new Coin();
yourCoin.flip();
if(yourCoin.isHeads())
{
headCount++;
}
}
System.out.println("If I flip 100 coins, I get " + headCount + " tails.");
}
}
これを把握することはできません
私はそれをコンパイルし、私は
で同じ出力を得るプログラムを実行するたびにコインを100回転がしたら、私は47頭を手に入れます。 私が100コインを払うと、私は50尾を得ます。
私は47と50は、プログラムを実行するたびに新しい乱数であることを作る方法を理解しません。私はint Math.Randomやその他のランダム変数を見てきましたが、このプログラムに実装する方法は不明です。何をしたい
これは、シードを使用する際の重要なポイントです。毎回同じ結果が得られます。 – azurefrog
あなたはそれを少しはっきりと言うことができますか?これはシードを使用した場合の全体です。 –
毎回同じ結果が得られないようにするには、乱数ジェネレータに毎回同じ初期入力をかけないでください。種を設定する全体のポイントは**あなたがプログラム**を実行するたびに同じ結果を保証することです。 – azurefrog