Problèmes De Production De Mathématiques.Nombre aléatoire, Soit 0 ou 1

J'ai vu cette question publiée dans un grand nombre de fois sur ce site et croyez-moi, j'ai regardé à travers de si nombreux et de si nombreux des vidéos YouTube, et rien n'a fini de travailler pour moi. Comme le titre le dit je veux un nombre aléatoire, soit 0 ou 1, puis qui sera retourné à la main() dans mon code ci-dessous.

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

De nombreuses solutions ont été proposé d'utiliser l'util.Option aléatoire qui je l'ai fait et fonctionne parfaitement, mais je veux savoir pourquoi je ne peux pas obtenir que cela fonctionne. Évidemment, je veux que ce nombre est un entier de moi-même si je les convertir en int après le nombre aléatoire a été généré. Mais peu importe ce que je ajouter ou multiplier les Mathématiques.random (), il va toujours être la tête, ou en tous être soit des Queues. Ne sont jamais mélangées.

Toute aide appréciée!

  • Ainsi, l'écriture 1 * aurait dû être un indice que vous ne l'avez pas droit, car en multipliant tout par 1 n'est pas accomplir grand-chose.
  • Random a un .nextInt() version prenant une limite supérieure. Sinon, eh bien, juste la génération aléatoire d'int et ne % 2 sur elle.
  • parce que Math.random() + 2 génère un nombre aléatoire compris entre 2,0 et 2,9. Rien dans cette gamme sera jamais égal à 1. Si vous êtes uniquement intéressé par 0 ou 1 utilisation Math.round(Math.random())
  • Merci à tous ceux qui ont répondu! J'ai juste multiplié les Mathématiques.random() par 2 et maintenant, c'est de me donner aléatoire des réponses pour les Têtes et les Queues. Le problème maintenant est le pourcentage pour les Chefs et le pourcentage de Queues dans la dernière instruction d'impression ne fonctionne pas du tout, ils sont toujours à la fois = 0...
InformationsquelleAutor alannm37 | 2015-02-09