卡住了尝试在我的Java作业计算机编程入门中使用随机对象

时间:2019-03-13 23:17:34

标签: java random seeding

简而言之,我有针对此类的课本实验室作业,并且我目前正在对对象进行模块处理。这个实验室让我使用随机数生成器,但是由于自动分级,因此需要可重复性。它通过添加2作为种子来完成此操作,但是即使我的程序完全按照正常情况运行,我似乎也无法获得实验室想要的东西。这是路线和我的代码:

编写一个程序,该程序模拟掷硬币进行决策。输入是需要多少个决策,输出是正面还是反面。假设输入的值大于0。

Ex:如果输入为3,则输出为:

tails 
heads
heads

要获得自动分级所需的可重复性,请使用2值播种该程序。在实际程序中,您应使用当前时间播种。在这种情况下,每个程序的输出都会有所不同,这是需要的,但不能自动定级。

注意:学生的一个常见错误是在每次调用rand.nextInt()之前创建Random的实例。但是,在程序开始时,只能进行一次播种,之后可以多次调用rand.nextInt()。

您的程序必须定义并调用以下返回“ heads”或“ tails”的方法。

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而不是零,使用else if语句作为尾部,并将coinFlipVal声明为“”,等等。我只是不知道如何获得他们想要的东西。非常感谢您对我所忽略的任何帮助。这是提交结果(给出程序对输出的期望):

1:比较输出 0/2 输出有所不同。请参阅下面的重点内容。 输入:

3

您的输出

tails
heads
tails

预期产量

tails
heads
heads

2:单元测试 2/2 HeadsOrTails()输入1

您的输出:

HeadsOrTails() with input 1 correctly returned:
tails

3:单元测试 0/3 HeadsOrTails()输入5

您的输出:

HeadsOrTails() with input 5 incorrectly returned:
tails
heads
tails
heads
heads

4:单元测试 0/3 HeadsOrTails()输入10

您的输出:

HeadsOrTails() with input 10 incorrectly returned:
tails
heads
tails
heads
heads
tails
tails
heads
tails
tails

1 个答案:

答案 0 :(得分:0)

我和您的答案相同,得到10/10,唯一的不同是,我在if之后添加了else语句;

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