Java 当需要一个随机数时,如何设置限制(1或2)?

Java 当需要一个随机数时,如何设置限制(1或2)?,java,random,Java,Random,我试图创建一种方法,用户可以预测模拟抛硬币是正面还是反面。我很难将随机数分配到1或2(对于正面或反面)。我相信我的尝试(下面的代码)给了我0、1和2 public static void coinToss(String call){ //setting up random Random random = new Random(); //set user guess to numeric value int guessNo=0;

我试图创建一种方法,用户可以预测模拟抛硬币是正面还是反面。我很难将随机数分配到1或2(对于正面或反面)。我相信我的尝试(下面的代码)给了我0、1和2

public static void coinToss(String call){
        //setting up random
        Random random = new Random();

        //set user guess to numeric value
        int guessNo=0;


        if (call.equalsIgnoreCase("heads")){
            guessNo=1;
        }else if (call.equalsIgnoreCase("tails")){
            guessNo=2;
        }else System.out.println("Invalid. Enter either heads or tails");

        //setting result for coin toss 
        **int result = random.nextInt(2);**
        System.out.println("Trace: numberic result is:" + result);

        //if...else statement to print results of coin toss
        if (result==1){
            System.out.println("Result: heads");
        }else if (result==2){
            System.out.println("Result: Tails");
        }else System.out.println("Invalid result");

        if (guessNo==result){
            System.out.println("Guess Correct");
        }else System.out.println("Guess incorrect");

    }//method end

我是一个相对的java新手(显然!),非常感谢您的帮助

int result=(random.nextInt(2))+1
是您可能想要尝试的内容。

int result=(random.nextInt(2))+1是您可能想要尝试的。

如文档所述,
Random::nextInt
提供一个介于0(包含)和指定上限(排除)之间的随机数。因此,您必须首先从范围
[0,2>
中获取一个随机数,然后将其加上1。

如文件所述,
random::nextInt
提供一个介于0(包括)和指定上限(排除)之间的随机数。因此,您必须首先从范围
中获取一个随机数[0,2>
然后再加上1。

建议在nextInt(2)结果中加一个的答案是正确的,但可能不是正确的长期策略。在许多方面,Java更喜欢数字序列尽可能从0开始。例如,数组索引值从0到长度-1


最好将正面/反面的内部编码改为使用[0,1]而不是[1,2],并直接使用nextInt结果。

答案建议在nextInt中添加一个(2)结果是正确的,但可能不是正确的长期策略。在许多方面,Java更喜欢数字序列,尽可能从0开始。例如,数组索引值从0到长度1


最好将正面/反面的内部编码改为使用[0,1]而不是[1,2],并直接使用nextInt结果。

我们的两个答案合在一起构成一个完整的答案:)好吧,我不介意你在答案中添加代码以使其完整:-),然后我将删除我的答案@MarkoTopolnik@MarkoTopolnik,我一分钟前看到了你的个人资料,你得到了“inge mark.hr”作为你的网站。inge是你的姓吗?不,我用的是我的真名。那只是我工作的公司(不涉及姓氏).啊,好吧:-),我的全名是Aniket Inge..所以我想我们的两个答案放在一起就构成了一个完整的答案:)好吧,我不介意你把代码放在你的答案中,使它完整:-),然后我会删除我的答案@MarkoTopolnik@MarkoTopolnik,我一分钟前看到了你的个人资料,你得到了“inge mark.hr”作为你的网站。inge是你的姓氏吗?不,我用的是我的真实姓名。那只是我工作的公司(不涉及姓氏)。啊,好吧:-),我的全名是Aniket inge。所以我想我会支持这个。如果你用0/1编码而不是1/2编码,那么工作量就少了(虽然不是很多),但如果你想通过计算一系列投掷的正面或反面数量来进行概括,这也很有用。直接将结果相加,得到编码为1的结果的总和。显然,另一个结果的计数为
N-total
,其中
N
是翻转的次数。这非常有用ul它在不同的领域有自己的名字-概率中的伯努利随机变量,或者普通数学中的指示变量。感谢您的输入!我决定使用“int result=(random.nextInt(2))+1;”因为我对Java还是相当陌生。下次我将使用您提供的答案尝试解决方案,所以我知道两种方法!:)我会支持这一点。如果您使用0/1编码而不是1/2编码,那么工作量会更少(虽然不会太大),但如果你想通过计算一系列投掷的正面或反面数量来进行概括,这也很有用。直接将结果相加,得到编码为1的结果的总和。显然,另一个结果的计数为
N-total
,其中
N
是翻转的次数。这非常有用ul它在不同的领域有自己的名字-概率中的伯努利随机变量,或者普通数学中的指标变量。感谢您的输入!我决定使用“int result=(random.nextInt(2))+1;”,因为我对Java还是相当陌生。下次我将使用您提供的答案尝试解决方案,这样我就知道了两种方法!)