2017-06-18 17 views
-3

私はこれを(そして他のいくつかの)サイトを検索していますが、過去3時間は役に立たないと言っています。私は自分のトピックに関して見つけることができるすべての投稿を読んでいます。適用されないか、私は何が起こっていたかをかなり理解できませんでした。選択が完了したら乱数ジェネレータを使用して選択肢を削除しますか? JAVA

私は2つの問題を抱えています。

  1. 乱数ジェネレータが作成されてから選択肢を破棄するようには思えません。

  2. 私の2番目の問題は、1回の競技で6ポイントのラウンドしかできないことです.6ポイントラウンドの特定の制約を持つものに限定する方法がわかりません。

このプログラムは、スカイダイビングの のジャンプの選択をシミュレートするように設計されています。 (A、AA、AAA)(難易度、特定の移動は表示されないか、 AA、AAAはすべてを含む)、個別の競技が6であるかどうかを または10ラウンド(A は常に6ラウンドになります)。ユーザが競技を選び、 のラウンド数を獲得すると、プログラムは個々のラウンドを完了するために個体 を出力することになっており、 ラウンドのポイント(競技の6または10ラウンド)。ここに 私の最初の問題がある:

移動が選出されたら、それは他の競争のために再び に使用することはできません。私は 私の人生のためにこれを行う方法を理解することはできません。上を移動する

、スコアリングのための2つの別々の カテゴリ、番号が動く(私の プログラムで1-22)と文字入りの移動(23以上)、番号付きの 2ポイントの価値があると文字入りがあります価値があります1.各ラウンドは5または6ポイントです

私はこれに6ポイントのラウンドがあるため、それは3つの番号付きの移動から構成できます。他の の組み合わせは受け入れられません。そしてそれに追加する、唯一の競争の全体が1つのから6個の点のラウンドがあり できる。*

 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

ようこそ。それは誰かが消化するための非常に長い説明です。デバッガでコードを実行しましたか?それが最初のことです。 – OldProgrammer

+0

シナリオ全体ではなく関連するコードセグメントを使用して、最小限の説明で問題を投稿するとします。 –

答えて

0

私は、書式設定のためにあなたの質問、あなたの問題のドメイン、またはあなたのコードを理解していません。

しかし、私はあなたが置き換えずにいくつかの数字をランダム化したいと思うと思います。そうする

いくつかの戦略があります:あなたの「デッキ」が空になるまで

  1. は、あなたが乱数を必要とするたびに番号をオフにポップ、それをシャッフル、番号のリストを作成します。

  2. 既に描画された一連の番号を維持します。番号がセットに含まれている場合は、別のセットをランダム化します。

ラウンド制約はそれの全体が、事前に+競争あなたのフォーメーションを構築することであろう6ポイントのマッチングの怠惰/ブルートフォース方法。あなたの制約に合っているかどうかを確認し、そうでない場合は、競技全体を再生成してください。

これは、制約が無効である可能性がかなり低い場合、パフォーマンス面では本当に経済的です。 < 30-40%

それ以外の場合は、現在の編隊のみを再生成できますが、有効な編隊がまだ残っているかどうかを確認する必要があります。私はまた、これがあなたのランダムな地層の分布にどれほど深刻な影響を与えるかもよく分かりません。

+0

応答をありがとう、それについて行く方法を理解するのに役立つ方法はありますか?私はJava 1クラスに入っていますので、私の知識はかなり限られています。私はプログラムが正常に乱数(移動)を生成している、私はちょうどそれが選択されているセットからその番号を削除する方法について知りません。私は、プログラムが一度選択された後、偽から真に番号(移動)を変更しようとしましたが、これまでには動作していません。 –

+0

私の質問の他の半分のために、私は6点のラウンドの周りの規定に関して機能しているプログラムを持っていますが、私は競争毎に1つの6ポイントラウンドにそれを制限する方法について知りません(ラウンドは5または6ポイントになることができます)。うまくいけば、少し明確にするのに役立ちます。 –

+0

6点保証はできますか?それともランダムに発生する可能性がありますか? –

関連する問題