3

Java で 1 から 42 までの 5 つの乱数を返そうとしています。

私は現在、単一の数値を返すロジックを持っています (それを ArrayList に入れますが、それを廃止したいと思います)。5 つの乱数を返す実装に困惑しています。ループに5つ必要ですか?

    for (int i = 0; i < 10; i++) {
        int r = (int) (Math.random() * 42 + 1);
    }

ここで他の関連する例を見てきましたが、それらは私のニーズよりも複雑に見えます。しかし、私は間違っている可能性があります。

4

7 に答える 7

2

を使用して一意の乱数Setを生成できます。5

Random random = new Random();
Set randomNumbers = new HashSet<Integer>();
while(randomNumbers.size()< 5) {
    randomNumbers.add(random.nextInt(42)+1);
}

ArrayListすべての乱数を保持する を使用していると述べたので、 randomNumbersset に存在するすべての要素をArrayList.

アップデート:-

あなたのニーズに合わせて、次のようなことをする必要があります:-

Random random = new Random();
Set<String> set = new HashSet<String>();
while(set.size()< 5) {
    set.add(String.valueOf(random.nextInt(42)+1));
}
fortuneList3.addAll(set);
于 2013-04-10T04:28:22.153 に答える
1

気をつけて!各番号は 1 回のみ取得できます。あなたのソリューションでは、同じ番号を複数回取得することが可能です。

他の解決策(ここでは同じ数字を複数回持つことはできません)は、すべての数字で配列を作成し、それをシャッフルして最初の5つを取ることです:

public int[] powerBalls() {
  // create array with all numbers
  List<Integer> balls = new ArrayList<Integer>(42);
  for (int i = 1; i <= 42; i++)
    balls.add(i);

  // shuffle
  Collections.shuffle(balls);

  // take first 5
  int[] result = new int[5];
  for (int i = 0; i < 5; i++)
    result[i] = balls.get(i);

  return result;
}
于 2013-04-10T04:30:03.280 に答える
0

私は最近、「Powerball」という適切な名前の jQuery プラグインを作成しました。私が使用している式をあなたと共有し、私のプラグインをリンクします。なぜ誰かが本当にこれを必要とするのかわかりません。私はちょうど楽しみのためにそれをやった!笑!

関数

function getNumbers() {
    var a=[];   //  array to return
    for(i=1;5>=i;i++){  //  for loop to get first 5 numbers
        var b = Math.floor(Math.random()*59)+1; //  set #
        while (a.indexOf(b) > -1) { b = Math.floor(Math.random()*59)+1; }   //  reset # if already used
        a.push(b);  //  add number to array
    }
    a.push(Math.floor(35*Math.random())+1); //  add ball 6 number
    return a;   //  0 index array will have a length of 6, [0-4] being whiteball numbers, [5] being the red ball
}

プラグイン

jsフィドル

  • コメント行の間にプラグインが含まれています
  • 使用例を示します

使い方は簡単$("element").powerball()です。ただし、現時点では$("element").powerball("setNumbers"). このメソッドは、p タグに示されている数値を単純にリセットします。

  • スタイル: メモ!
    • すべてのスタイリングは、初期化時にヘッダーに追加されたスタイル タグによって行われます。これは、余分なファイルを追加する必要がないことを意味しますが、カスタム スタイリングも容易になります。jsFiddleでのスタイリングの詳細を参照してください。
于 2013-05-16T18:32:56.367 に答える
0

これは単純明快なアプローチです。

   List<Integer> generated = new ArrayList<Integer>();
          for (int i = 0; i < 5; i++)
          {
              while(true)
              {
                 int r = (int) (Math.random() * 42 + 1);
                  if (!generated.contains(r))
                  {            
                      generated.add(r);
                      break;
                  }
              }
          }
于 2013-04-10T04:32:40.417 に答える