2017-06-18 64 views
-3

我只是想开始说我在过去的3个小时里一直在搜索这个(还有一些其他的)网站而无济于事,我已经阅读了每篇关于我的主题的文章,不适用或者我不太明白发生了什么。获取随机数生成器以在选择完成后删除选择? JAVA

我有2个问题。

  1. 我似乎无法得到随机数生成器放弃一旦做出选择。

  2. 我的第二个问题是每个比赛只能有一个六分的轮次,而我似乎无法弄清楚如何将它限制在一个具有6分轮次的特定约束条件下。

该计划旨在模拟挑选跳伞比赛的跳跃。有三个独立的比赛,分别是(A,AA,AAA)(难度水平,某些动作没有出现A或 AA,AAA是全包括的),用户可以从中挑选以及 个人比赛是否是6或10轮(A将 总是6轮)。一旦用户选择了比赛并且轮次数为 ,则该程序应该输出每个回合完成的个人动作 以及 回合的分数(对于所有6轮或10轮的比赛)。这里是 我的第一个问题在于:

一旦移动被选中,它不能被 用于其余的比赛。我不能为我的生活找出如何做到这一点。

移动的,有两个分开的 类别得分中,编号的移动(1-22在我 程序)和字母移动(23以上),在编号是值得 2点和字母是值得1.每轮都是5分或6分

我这个问题是因为那里有一个6点的轮,它只能由3个编号的动作组成,其他 组合是可以接受的;并补充,只能有 是一个六点轮比赛的全部。*

 for(int i=0; i < round; i++) 
    { 
     System.out.printf("\nRound %d:\n", i+1); 
     point = 0; 

     while(point < 5) 
     { 
     pickedRandom=false; 
     formation = myRandom.nextInt(38) + 1; 

      while(formation == 31) 
      { 
       formation = myRandom.nextInt(38) + 1; 
      } 

      if(point == 4 && pickedRandom && formation < 23)  
      { 
       while(formation < 23) 
       formation = myRandom.nextInt(38) + 1; 
      } 

      if(formation < 23) 
      { 
       point+=2;     
      } 
      else 
      { 
       pickedRandom=true; 
       point++; 

      } 

      formationRound.set(formation, true); 

      if(formation > 22) 
      System.out.printf(" %s %s ",randomLetter(formation), formationName(formation)); 

      else 
      System.out.printf(" %d %s", formation, formationName(formation)); 

     } 
      System.out.println(); 
      System.out.printf(" %s \n", point);  
    } 
} 
+1

一段文字讲故事 - 没问题 - 不知道你的代码出了什么问题请参阅[请添加一个最小的,完整的和可验证的例子](https://stackoverflow.com/help/mcve) 和https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ –

+0

欢迎来到SO。对于某人来说,这是一个很长的描述。你是否通过调试器运行你的代码?这是第一件要做的事情。 – OldProgrammer

+0

假设您使用相关的代码段而不是整个塞纳里奥以最简单的描述发布您的问题。 –

回答

0

我不明白你的问题,由于格式,您的问题域,或者你的代码。

不过,我想你说你想随机化一些数字,没有替换。

一些策略这样做是:

  1. 创建数字的列表,然后将它洗,每次需要一个随机数时弹出一个报数,直到你的“出牌”是空的。

  2. 维护一组已经绘制的数字。如果数字在集合中,则随机化另一个。

匹配6点圆形约束的懒/蛮力方法是预先构建您的阵型+竞赛,完整。检查它是否符合你的约束条件,如果没有,则重新进行整个比赛。

如果您的约束无效的几率相当低,这只是在性能方面非常经济。 < 30-40%

否则,您只能重新生成当前编队,但您需要检查是否仍有可能的有效编队。我也不确定这会对你的随机编队分配造成多大的影响。

+0

谢谢你的回应,有没有什么方法可以帮助我弄清楚如何去做。我在Java 1课,所以我的知识在这方面相当有限。我有程序成功地生成随机数字(移动),我只是不知道如何去除集合中的数字,一旦它被选中。我试图让程序在被选中后将其数字(移动)从错误更改为真,但目前为止还没有成功。 –

+0

对于我的问题的另一半,我有程序运行方面的约6个点周围的规定,但我不知道如何去限制它每个比赛一轮6点(轮可以是5点或6点)。希望这有助于澄清一点。 –

+0

6点保证是否保证?或者这是一个可能的随机事件? –