Java 当需要一个随机数时,如何设置限制(1或2)?
我试图创建一种方法,用户可以预测模拟抛硬币是正面还是反面。我很难将随机数分配到1或2(对于正面或反面)。我相信我的尝试(下面的代码)给了我0、1和2Java 当需要一个随机数时,如何设置限制(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;
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还是相当陌生。下次我将使用您提供的答案尝试解决方案,这样我就知道了两种方法!)