2017-06-18 63 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點保證是否保證?或者這是一個可能的隨機事件? –