【发布时间】:2015-02-09 00:30:09
【问题描述】:
我想要一个随机数,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(),它总是要么是 Heads,要么都是 Tails。从来不混。
【问题讨论】:
-
好吧,写
1 *应该是你没有做对的线索,因为任何东西乘以 1 并不能完成很多事情。 -
Random的.nextInt()版本采用上限。否则,好吧,只需生成一个随机 int 并对其执行% 2。 -
因为
Math.random() + 2会生成一个介于 2.0 和 2.9 之间的随机数。此范围内的任何内容都不会等于 1。如果您只对 0 或 1 感兴趣,请使用Math.round(Math.random()) -
感谢所有回答的人!我只是将 Math.random() 乘以 2,现在它给了我正面和反面的随机答案。现在的问题是最后一个打印语句中 Heads 的百分比和 Tails 的百分比根本不起作用,它们总是 = 0...