简短,我有此类的教科书实验室分配,目前我正在对对象进行模块。该实验室让我使用一个随机数生成器,但由于自动分级,它需要重复性。它通过与2种子一起播种来做到这一点,但是即使我的程序在正常情况下应完全应有的方式,我似乎也无法得到实验室想要的东西。这是我的指示和我的代码:
编写一个程序,该程序模拟翻转硬币以做出决定。输入是需要多少个决策,输出是头部或尾巴。假设输入的值大于0。
ex:如果输入为3,则输出为:
tails
heads
heads
对于自动级别所需的可重复性,请以2为2的程序播种。在一个真实程序中,您将在当前时间播种。在这种情况下,每个程序的输出都会有所不同,这是所需的,但不能自动分级。
注意:一个常见的学生错误是在每个调用rand.nextint()之前创建一个随机的实例。但是,在程序开始时,播种只能进行一次,之后rand.nextint()可以称为任何次数。
您的程序必须定义并调用以下返回"头"或"尾巴"的方法。
public static String HeadsOrTails(Random rand)
这是我到目前为止所拥有的:
import java.util.Scanner;
import java.util.Random;
public class LabProgram {
public static String HeadsOrTails(Random rand) {
String coinFlipVal = "tails";
if (rand.nextInt(2) == 0) {
coinFlipVal = "heads";
}
return coinFlipVal;
}
public static void main(String[] args) {
Scanner key = new Scanner(System.in);
Random randGen = new Random(2); // Unique seed
int iDecisions = key.nextInt();
for (int i = 0; i < iDecisions; i++) {
System.out.println(HeadsOrTails(randGen));
}
}
}
这确实做到了它所假定的,因为它会产生一组随机的头部或尾巴结果,无论我想要的许多迭代,但不是按照程序所寻找的顺序。我已经玩过IF语句,将其设置为1而不是零,使用其他if语句以尾巴并将Coinflipval宣布为"等。我只是不知道如何获得他们想要的东西。对我所忽视的东西的任何帮助都非常感谢。这是提交结果(这给出了程序对输出的期望):
1:比较输出0/2输出有所不同。请参阅下面的亮点。输入:
3
您的输出
tails
heads
tails
预期输出
tails
heads
heads
2:单位测试2/2HeadSortails()输入1
您的输出:
HeadsOrTails() with input 1 correctly returned:
tails
3:单位测试0/3HeadSortails()输入5
您的输出:
HeadsOrTails() with input 5 incorrectly returned:
tails
heads
tails
heads
heads
4:单位测试0/3HeadSortails()输入10
您的输出:
HeadsOrTails() with input 10 incorrectly returned:
tails
heads
tails
heads
heads
tails
tails
heads
tails
tails
我的答案与您相同,并且得到了10/10,唯一的区别是我在if之后添加了另一个语句;
public static String headsOrTails(Random rand){
String coinFlip; // no need to "initialize" as it is definitely assigned just below
if (rand.nextInt(2) == 0)
coinFlip = "heads";
else // Added code
coinFlip = "tails";
return coinFlip;
}
这应该有效
import java.util.Scanner;
import java.util.Random;
public class LabProgram {
public static String headsOrTails(Random rand) {
String coinflip = "tails";
if (rand.nextInt(2) == 0) {
coinflip = "heads";
}
return coinflip;
}
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
Random rand = new Random(2);
int choice = scnr.nextInt();
for (int i = 0; i < choice; i++) {
System.out.println(headsOrTails(rand));
}
}
}