首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用Random object进行Java计算机编程入门作业

尝试使用Random object进行Java计算机编程入门作业
EN

Stack Overflow用户
提问于 2019-03-14 07:17:34
回答 1查看 4.6K关注 0票数 3

简而言之,我有这门课的教科书实验作业,目前我正在做一个关于物体的模块。这个实验让我使用随机数生成器,但由于自动评分,它需要可重复性。它通过设置2来实现这一点,但是我似乎不能得到实验室想要的东西,即使我的程序在正常情况下完全按照它应该的方式运行。以下是说明和我的代码:

写一个程序,模拟抛硬币来做决定。输入是需要多少决策,输出要么是正面,要么是反面。假设输入是一个大于0的值。

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

代码语言:javascript
复制
tails 
heads
heads

对于自动评分所需的可重复性,请将值2设定为程序种子。在实际程序中,您将使用当前时间设定种子。在这种情况下,每个程序的输出将是不同的,这是所需的,但不能自动评分。

注意:学生们经常犯的一个错误是在每次调用rand.nextInt()之前创建一个随机数实例。但是种子设定应该只在程序开始时执行一次,之后rand.nextInt()可以被调用任意次。

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

代码语言:javascript
复制
public static String HeadsOrTails(Random rand)

这就是我到目前为止所知道的:

代码语言:javascript
复制
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而不是0,对尾部使用else if语句,并将coinFlipVal声明为"",等等。我只是不知道如何获得他们正在寻找的东西。对于我所忽略的任何帮助,我都非常感谢。下面是提交结果(给出了程序期望从输出中得到的结果):

1:比较输出0/2输出不同。请看下面的高亮部分。输入:

代码语言:javascript
复制
3

您的输出

代码语言:javascript
复制
tails
heads
tails

预期输出

代码语言:javascript
复制
tails
heads
heads

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

您的输出:

代码语言:javascript
复制
HeadsOrTails() with input 1 correctly returned:
tails

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

您的输出:

代码语言:javascript
复制
HeadsOrTails() with input 5 incorrectly returned:
tails
heads
tails
heads
heads

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

您的输出:

代码语言:javascript
复制
HeadsOrTails() with input 10 incorrectly returned:
tails
heads
tails
heads
heads
tails
tails
heads
tails
tails
EN

回答 1

Stack Overflow用户

发布于 2019-11-21 00:10:47

我得到了和你一样的答案,得到了10/10,唯一的区别是我在if后面添加了一个else语句;

代码语言:javascript
复制
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;
   }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55152584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档