0

いくつかの乱数生成では、すべての整数を書き出す代わりに、ループを使用してこれらすべての数値を生成できるかどうか疑問に思っていました。それよりも良い方法はありますか?そのままにしていいですか?

    public static int rx1 = 0+(int)(Math.random()*760);
public static int ry1 = 0+(int)(Math.random()*555);
public static int rx2 = 0+(int)(Math.random()*760);
public static int ry2 = 0+(int)(Math.random()*555);
public static int rx3 = 0+(int)(Math.random()*760);
public static int ry3 = 0+(int)(Math.random()*555);
public static int rx4 = 0+(int)(Math.random()*760);
public static int ry4 = 0+(int)(Math.random()*555);
public static int rx5 = 0+(int)(Math.random()*760);
public static int ry5 = 0+(int)(Math.random()*555);
public static int rx6 = 0+(int)(Math.random()*760);
public static int ry6 = 0+(int)(Math.random()*555);
public static int rx7 = 0+(int)(Math.random()*760);
public static int ry7 = 0+(int)(Math.random()*555);
public static int rx8 = 0+(int)(Math.random()*760);
public static int ry8 = 0+(int)(Math.random()*555);
public static int rx9 = 0+(int)(Math.random()*760);
public static int ry9 = 0+(int)(Math.random()*555);
public static int rx10 = 0+(int)(Math.random()*760);
public static int ry10 = 0+(int)(Math.random()*555);
public static int rx11 = 0+(int)(Math.random()*760);
public static int ry11 = 0+(int)(Math.random()*555);
public static int rx12 = 0+(int)(Math.random()*760);
public static int ry12 = 0+(int)(Math.random()*555);
public static int ry13 = 0+(int)(Math.random()*555);
public static int rx13 = 0+(int)(Math.random()*760);
public static int rx14 = 0+(int)(Math.random()*555);
public static int ry14 = 0+(int)(Math.random()*555);
public static int rx15 = 0+(int)(Math.random()*760);
public static int ry15 = 0+(int)(Math.random()*555);

public static int rx16 = 0+(int)(Math.random()*760);
public static int ry16 = 0+(int)(Math.random()*555);
public static int rx17 = 0+(int)(Math.random()*760);
public static int ry17 = 0+(int)(Math.random()*555);
public static int rx18 = 0+(int)(Math.random()*760);
public static int ry18 = 0+(int)(Math.random()*555);
public static int rx19 = 0+(int)(Math.random()*760);
public static int ry19 = 0+(int)(Math.random()*555);
public static int rx20 = 0+(int)(Math.random()*760);
public static int ry21 = 0+(int)(Math.random()*555);
public static int rx21 = 0+(int)(Math.random()*760);
public static int ry22 = 0+(int)(Math.random()*555);
public static int rx22 = 0+(int)(Math.random()*760);
public static int ry23 = 0+(int)(Math.random()*555);
public static int rx23 = 0+(int)(Math.random()*760);
public static int ry24 = 0+(int)(Math.random()*555);
public static int rx24 = 0+(int)(Math.random()*760);
public static int ry25 = 0+(int)(Math.random()*555);
public static int rx25 = 0+(int)(Math.random()*760);
public static int ry26 = 0+(int)(Math.random()*555);
public static int rx27 = 0+(int)(Math.random()*760);
public static int ry28 = 0+(int)(Math.random()*555);
public static int rx28 = 0+(int)(Math.random()*760);
public static int ry29 = 0+(int)(Math.random()*555);
public static int ry30 = 0+(int)(Math.random()*555);
public static int rx30 = 0+(int)(Math.random()*760);
public static int rx31 = 0+(int)(Math.random()*555);
public static int ry31 = 0+(int)(Math.random()*555);
public static int rx32 = 0+(int)(Math.random()*760);
public static int ry32 = 0+(int)(Math.random()*555);
4

6 に答える 6

4

それらを2つの配列に入れるだけです:

public static int[] x = new int[32];
public static int[] y = new int[32];

for(int i = 0; i < 32; i++)
{
    x[i] = (int)(Math.random()*760);
    y[i] = (int)(Math.random()*555);
}
于 2013-04-04T07:03:52.620 に答える
1

同じために配列を使用できます。サンプルプログラムはこちら

package com.stackoverflow.test;

public class RandomCheck {

    public static void main(String args[]) {

        int[] tempArray = new int[64];

        for (int i = 0; i < 64; i++) {
            if (i % 2 == 0)
                tempArray[i] = (int) (Math.random() * 760);
            else
                tempArray[i] = (int) (Math.random() * 555);
        }

        for (int i = 0; i < 64; i++) {
            System.out.print(tempArray[i] + " , ");
        }

    }
}
于 2013-04-04T07:08:13.623 に答える
0

ここで説明されているように、これにはCommons Mathを使用できます

例として、次の例では、ミリ秒単位の現在の時刻を JDK PRNG のシードとして使用して、1 から 1,000,000 までの 50 個の長整数のランダムなシーケンスを生成します。

RandomData randomData = new RandomDataImpl(); 
for (int i = 0; i < 1000; i++) {
    value = randomData.nextLong(1, 1000000);
}
于 2013-04-04T08:42:01.110 に答える
0

これはアプローチになります:

public static final int RX_SIZE = 32;
public static final int RY_SIZE = 32;
public static int rx[] = new int[RX_SIZE];
public static int ry[] = new int[RY_SIZE];

static {
    for(int i = 0; i < RX_SIZE; i++) {
        rx[i] = 0+(int)(Math.random()*760);
    }
    for(int i = 0; i < RY_SIZE; i++) {
        ry[i] = 0+(int)(Math.random()*555);
    }
}

ただし、それは特定のニーズによって異なります。

于 2013-04-04T07:09:30.353 に答える
0

Java の random() を単純に使用して、次のように実行できます。

public static int[] x = new int[32];

public static int[] y = new int[32];

for(int i = 0; i < 32; i++)

{

x[i] = (int)(Math.random()*760);

y[i] = (int)(Math.random()*555);

}

Math.random() の詳細については、リンクhttp://www.w3schools.com/jsref/jsref_random.asp http://msdn.microsoft.com/en-us/library/ie/41336409(v ) をたどることができます。 =vs.94).aspx

于 2013-04-04T13:46:53.827 に答える
0

for(;;)loop と一緒に使用できますArrayList。これらの数値の固定量が必要かどうかは、質問からは明らかではありません。

import java.util.ArrayList;
import java.lang.Math;
public class Main{

    public static void main(String args[]){
        int n = 32; // No of random numbers requried for x and y
        ArrayList<Integer> randomNumbersListX = new ArrayList<Integer>();
        ArrayList<Integer> randomNumbersListY = new ArrayList<Integer>();
        for(int i=1; i<=n ; i++){
             randomNumbersListX.add((int)(Math.random()*760));
             randomNumbersListY.add((int)(Math.random()*555));
        }
         for(int i=0; i<randomNumbersListX.size() ; i++){
            System.out.println("rx"+(i+1)+" "+randomNumbersListX.get(i));
            System.out.println("ry"+(i+1)+" "+randomNumbersListY.get(i));
        }
    }
}

1000 の代わりに変数を乗算するには、1000 をMath.random()乗算した別の変数を使用できます。これrandomNumbersList.add((int)Math.random()*math.random()*1000);が解決策になります。

このIdeone スニペットをご覧ください

于 2013-04-04T07:05:34.270 に答える