0

私の機能:

public int[] generateRandomInteger(){
    int[] arr = new int[100];
    Random randomGenerator = new Random();

    for (int i = 0; i < 100; i++){
        int randomInt = randomGenerator.nextInt(16) + 10;
        arr[i] = randomInt;
    }        
    return arr;
}

問題は、別の関数でarrを使用すると、100 個の整数の別の配列が生成されることです。この問題を回避するにはどうすればよいですか? 上記の関数から生成される配列を正確に使用したいだけです。

どんな助けでも感謝します!

4

5 に答える 5

1

一度生成するだけで、常に使用できます。

int[] array = generateRandomInteger();
// operate on it...
// or pass it to another function
modifyArray(array);
System.out.println(Arrays.toString(array));

どこ

public void modifyArray(int[] array)
{
    for (int i = 0; i < array.length; ++i)
    {
        array[i] += 10;
    }
}
于 2013-08-28T18:31:57.163 に答える
0

ランダム インスタンスを作成するときにシードを使用できます。同じシードで作成されたすべてのランダム インスタンスは、呼び出しが両方に対して同じ順序で行われた場合、同じ結果を返します。しかし、代わりに配列の 1 つのインスタンスを保持したいという Rohit Jain に同意します。

于 2013-08-28T18:32:08.990 に答える
0
private int[] generatedArray = null; //This keeps the array you generated
private int randomIdx = 0; //This keeps track of where you are

//This function controls access to your random numbers.
public int getNextInt() {
  if (this.generatedArray == null) {
    this.generatedArray = generateRandomInteger();
    randomIdx = 0;
  }

  return generatedArray[randomIdx++];
}

//Technically this doesn't need to be in the same class
//We keep it untouched, though, in case you need the functionality as-is
public int[] generateRandomInteger(){
    int[] arr = new int[100];
    Random randomGenerator = new Random();

    for (int i = 0; i < 100; i++){
        int randomInt = randomGenerator.nextInt(16) + 10;
        arr[i] = randomInt;
    }        
    return arr;
}
于 2013-08-28T18:33:37.957 に答える