我需要一个随机数,可以是0或1,并将其作为下面代码中的返回值返回给main()函数。
import java.util.Scanner;
public class Exercise8Lab7 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int numFlips = 0;
int heads = 0;
int tails = 0;
String answer;
System.out.print("Please Enter The Number Of Coin Tosses You Want: ");
numFlips = input.nextInt();
for(int x = 1;x <= numFlips; x++){
if(coinToss() == 1){
answer = "Tails";
tails++;
}
else{
answer = "Heads";
heads++;
}
System.out.print("\nCoin Toss " + x + ": " + answer);
}
System.out.println("\n\n====== Overall Results ======" +
"\nPercentage Of Heads: " + (heads/numFlips)*100 + "\nPercentage Of Tails: " + (tails/numFlips)*100);
}
public static int coinToss(){
double rAsFloat = 1 * (2 + Math.random( ) );
int r = (int)rAsFloat;
return r;
}
}
已经有很多解决方案建议使用util.Random选项,我已经这样做了并且完美地运行,但我想弄清楚为什么我无法使其工作。显然,我希望数字是一个int类型,所以在生成随机数后将其转换为int类型。但无论我将Math.random()加上什么值或乘以什么值,它总是全部为正面或负面。从未混合。
1 *
应该已经是一个提示,让你意识到你做错了,因为将任何东西乘以1并没有什么作用。 - ajbRandom
有一个带有上限的.nextInt()
版本。否则,只需生成一个随机整数并对其进行%2
操作。 - fgeMath.random() + 2
生成的随机数在 2.0 和 2.9 之间。这个范围内的任何数字都不会等于 1。如果你只对 0 或 1 感兴趣,请使用Math.round(Math.random())
。 - Hunter McMillen