为什么我的代码在使用 Math.random() 时只得到正面或反面?
Why is my code only getting all heads or all tails when using Math.random()?
我想掷一枚硬币,生成正面或反面。 heads = 0
和 tails = 1
.
然后它将更新一个数组,其中索引 0 是正面翻转的数量,索引 1 是反面翻转的数量。
但是,我的代码要么获得所有正面,要么获得所有反面。 Math.random()
数字生成器有问题吗?
import java.util.Random;
import java.lang.Math;
class FlipCoin
{
public static void main(String[] args)
{
int[] tracker = new int[2];
int heads = 0;
int tails = 1;
int tosses = 10;
coinFlip(tracker, heads, tails, tosses);
//System.out.printf()
}
public static void coinFlip(int[] tracker, int heads, int tails, int tosses)
{
int flips =(int)(Math.random());
for(int x = 0; x <= tosses; x++)
{
if (flips == heads)
{
tracker[0] ++;
System.out.println("You flipped heads!");
}
else if (flips == tails)
{
tracker[1] ++;
System.out.println("You flipped tails!");
}
}
for(int i = 0; i < tracker.length; i++)
{
System.out.println(tracker[i] + " ");
}
}
}
根据评论总结,正确的解决方案是:
public static void main(final String[] args)
{
final int[] tracker = new int[2];
final int heads = 0;
final int tails = 1;
final int tosses = 10;
coinFlip(tracker, heads, tails, tosses);
}
public static void coinFlip(final int[] tracker, final int heads, final int tails, final int tosses)
{
for (int x = 0; x < tosses; x++)
{
int flips = (int) (Math.random() * 2);
if (flips == heads)
{
tracker[0]++;
System.out.println("You flipped heads!");
}
else if (flips == tails)
{
tracker[1]++;
System.out.println("You flipped tails!");
}
}
for (int y = 0; y < tracker.length; y++)
{
System.out.println((y == heads ? "Heads" : (y == tails) ? "Tails" : "") + ": " + tracker[y] + " ");
}
}
我想掷一枚硬币,生成正面或反面。 heads = 0
和 tails = 1
.
然后它将更新一个数组,其中索引 0 是正面翻转的数量,索引 1 是反面翻转的数量。
但是,我的代码要么获得所有正面,要么获得所有反面。 Math.random()
数字生成器有问题吗?
import java.util.Random;
import java.lang.Math;
class FlipCoin
{
public static void main(String[] args)
{
int[] tracker = new int[2];
int heads = 0;
int tails = 1;
int tosses = 10;
coinFlip(tracker, heads, tails, tosses);
//System.out.printf()
}
public static void coinFlip(int[] tracker, int heads, int tails, int tosses)
{
int flips =(int)(Math.random());
for(int x = 0; x <= tosses; x++)
{
if (flips == heads)
{
tracker[0] ++;
System.out.println("You flipped heads!");
}
else if (flips == tails)
{
tracker[1] ++;
System.out.println("You flipped tails!");
}
}
for(int i = 0; i < tracker.length; i++)
{
System.out.println(tracker[i] + " ");
}
}
}
根据评论总结,正确的解决方案是:
public static void main(final String[] args)
{
final int[] tracker = new int[2];
final int heads = 0;
final int tails = 1;
final int tosses = 10;
coinFlip(tracker, heads, tails, tosses);
}
public static void coinFlip(final int[] tracker, final int heads, final int tails, final int tosses)
{
for (int x = 0; x < tosses; x++)
{
int flips = (int) (Math.random() * 2);
if (flips == heads)
{
tracker[0]++;
System.out.println("You flipped heads!");
}
else if (flips == tails)
{
tracker[1]++;
System.out.println("You flipped tails!");
}
}
for (int y = 0; y < tracker.length; y++)
{
System.out.println((y == heads ? "Heads" : (y == tails) ? "Tails" : "") + ": " + tracker[y] + " ");
}
}