dimanche 8 février 2015

Problems Generating A Math.random Number, Either 0 or 1

I've seen this question posted in a lot of times on this website and believe me I have looked through so many of them and so many YouTube videos and nothing has ended up working for me. As the title says I want a random number, either 0 or 1 and then that will be returned to main() as in my code below.



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;
}
}


Many solutions had been suggested to use the util.Random option which I have done and works perfectly but I want to sort out why I can't get this to work. Obviously I want the number to be an int myself so I convert it to an int after the random number has been generated. But no matter what I add or multiply the Math.random() by, it will always all either be Heads or all either be Tails. Never mixed.


Any help appreciated!





Aucun commentaire:

Enregistrer un commentaire